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

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



답변

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


답변

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)


답변

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


답변

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

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


답변

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;

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


답변