느리게 실행되는 쿼리 통계 얻기


10

내 데이터베이스 응용 프로그램은 여러 가지 다른 쿼리를 실행합니다. log_min_duration_statement1000으로 설정 했습니다. 그러나 거기에 기록 된 쿼리가 항상 느린 것은 아니며 대부분의 경우 몇 ms 만 걸립니다.

모든 쿼리에 대한 통계를 얻을 수 있습니까? 그리고 얼마나 자주 1000ms보다 오래 걸렸습니까?


1
도움이되는지 확인하십시오 : log_min_duration_statement 설정이 무시 됩니다. 또는 설정을 변경 한 후 구성을 다시로드하는 것을 잊었습니다.
Daniel Vérité

답변:


11

SQL 명령으로 확장 pg_stat_statements를 설치하십시오.

CREATE EXTENSION pg_stat_statements

적절한 사용자 (예 : 응용 프로그램이 사용하는 사용자 또는 일부 dba 계정)를 사용하여이를 만들 수 있습니다. 확장 프로그램을 생성 한 사용자도 확장 기능을 소유합니다.

메모리를 사용하는 데 약간의 영향을 미치므로 postgresql.conf의 구성을 약간 변경해야하기 때문에 서버를 다시 시작해야하지만 모든 쿼리에 대한 통계를 제공합니다.

참조하시기 바랍니다 문서 페이지를 pg_stat_statements 제공에 대한 자세한 내용을 참조하십시오. pg_stat_statements에 대한 postgresql.conf 구성 파일 구성에 대한 빠른 참조는 여기 를 참조 하십시오 .

설치하고 실행하면 pg_stat_statements 뷰를 쿼리하여 통계를 볼 수 있습니다.

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..

2

@JoishiBodio가 pg_stat_statements확장 기능을 사용 하여 느린 쿼리 통계를 볼 수 있다고 말한 방법 . 설치에 어려움을 겪는 사람들을 위해 (내가했던 것처럼) :

  1. pg_stat_statements사용 가능한 확장 프로그램 목록에 있는지 확인하십시오 .

    SELECT * FROM pg_available_extensions;
  2. postgresql-contrib데비안 / 우분투에서 시스템 패키지 관리자를 통해 패키지를 설치 하십시오 :

    sudo apt-get install postgresql-contrib-9.5

그런 다음 1 단계를 다시 수행하십시오.

  1. 추가 pg_stat_statementsshared_preload_librariesPostgreSQL의 구성 :

경유 postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

명령 줄 인수를 통해 (따옴표 없음) :

    postgres -c shared_preload_libraries=pg_stat_statements
  1. 그런 다음 데이터베이스에서 확장을 작성하십시오.

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