SQL Server 프로파일 러와 동등한 PostgreSQL이 있습니까?


82

PostgreSQL 서버에 제출 된 쿼리를 확인해야합니다. 일반적으로 SQL Server 프로파일 러를 사용하여 SQL Server 영역에서이 작업을 수행하지만 PostgreSQL에서이 작업을 수행하는 방법을 아직 찾지 못했습니다. 유료 도구가 꽤 많이있는 것 같습니다. 오픈 소스 변형이 있기를 바랍니다.

답변:


59

log_statement 구성 설정을 사용하여 서버에 대한 모든 쿼리 목록을 가져올 수 있습니다.

https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement

그냥 설정하고 로깅 파일 경로를 설정하면 목록이 표시됩니다. 장기 실행 쿼리 만 기록하도록 구성 할 수도 있습니다.

그런 다음 해당 쿼리를 가져 와서 EXPLAIN을 실행하여 무슨 일이 일어나고 있는지 알아낼 수 있습니다.

https://www.postgresql.org/docs/9.2/static/using-explain.html


1
완벽, 그것에 대해 꼬리 -f를 던졌습니다
BozoJoe

3
.csv 로그 파일을 "SQL Server 프로파일 러와 동일"이라고 부르기는 어렵습니다 ...
Feofilakt

31

Joshua의 답변에 추가하여 현재 실행중인 쿼리 를 확인 하려면 언제든지 다음 문을 실행 하면됩니다 (예 : PGAdminIII의 쿼리 창에서).

SELECT datname,procpid,current_query FROM pg_stat_activity;

샘플 출력 :

     datname    | procpid | current_query
 ---------------+---------+---------------
  mydatabaseabc |    2587 | <IDLE>
  anotherdb     |   15726 | SELECT * FROM users WHERE id=123 ;
  mydatabaseabc |   15851 | <IDLE>
 (3 rows)

4
내 버전의 PG (9.3)에서는 다음 쿼리를 사용했습니다. SELECT datname, pid, usename, application_name, client_addr, query FROM pg_stat_activity; pg_stat_activity는 DB 'postgresql'의보기입니다
mrmuggles

3
SELECT client_addr, state_change, query FROM pg_stat_activity;
Dmitry Dyachkov

3
"쿼리"열 길이가 너무 짧아 긴 쿼리를 표시 할 수 없습니다.
Dejan Janjušević

25

나는 pgBadger ( http://dalibo.github.io/pgbadger/ )를 발견했고 여러 번 내 생명을 구한 환상적인 도구입니다. 다음은 보고서의 예입니다. http://dalibo.github.io/pgbadger/samplev4.html . 그것을 열고 '상단'메뉴로 이동하면 가장 느린 쿼리와 시간이 많이 걸리는 쿼리를 볼 수 있습니다. 그런 다음 세부 사항을 물어보고 시간별로 쿼리를 보여주는 멋진 그래프를 볼 수 있으며 세부 사항 버튼을 사용하면 SQL 텍스트를 예쁜 형태로 볼 수 있습니다. 이 도구가 무료이고 완벽하다는 것을 알 수 있습니다.


2
꽤 좋은 도구입니다. : 나는 공식 문서가 꽤 장황로,이를 설치하려면이 자습서를 사용 dhis2.org/analysing-postgresql-logs-using-pgbadger
mrmuggles

5
Windows 사용자의 짜증이 도구는 만 * 괜찬아 시스템에 대한 것을 그냥 메모
알렉스 클라우스

OP가 필요한 성능 정보를 수동으로 추출하기 위해 구성 옵션이 아닌 Sql Server Profiler와 같은 도구를 요청함에 따라 +1했습니다.
EAmez

17

PostgreSQL 서버에 제출 된 쿼리를 확인해야합니다.

옵션으로 pgAdmin을 사용하는 경우 (내 그림에서는 pgAdmin 4 v2.1). "대시 보드"탭을 통해 쿼리를 관찰 할 수 있습니다. 응용 프로그램, 대시 보드의 pgadmin4 쿼리


2
긴 SQL 문을 표시 할 수 없습니다. SQL이 잘립니다.
Dejan Janjušević

0

pg_stat_statements 확장을 사용할 수 있습니다 .

docker에서 db를 실행하는 경우이 명령을에 추가하십시오 docker-compose.yml. 그렇지 않으면 설치 지침을 참조하십시오.

command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c max_connections=200

그런 다음 db에서 다음 쿼리를 실행하십시오.

CREATE EXTENSION pg_stat_statements;

이제 더 많은 시간이 소요 된 작업을 확인하려면 :

SELECT * FROM pg_stat_statements ORDER BY total_time/calls DESC LIMIT 10;

또는 해당보기에서 다른 쿼리를 사용하여 원하는 내용을 찾으십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.