내 데이터베이스 응용 프로그램은 여러 가지 다른 쿼리를 실행합니다. log_min_duration_statement1000으로 설정 했습니다. 그러나 거기에 기록 된 쿼리가 항상 느린 것은 아니며 대부분의 경우 몇 ms 만 걸립니다.
모든 쿼리에 대한 통계를 얻을 수 있습니까? 그리고 얼마나 자주 1000ms보다 오래 걸렸습니까?
내 데이터베이스 응용 프로그램은 여러 가지 다른 쿼리를 실행합니다. log_min_duration_statement1000으로 설정 했습니다. 그러나 거기에 기록 된 쿼리가 항상 느린 것은 아니며 대부분의 경우 몇 ms 만 걸립니다.
모든 쿼리에 대한 통계를 얻을 수 있습니까? 그리고 얼마나 자주 1000ms보다 오래 걸렸습니까?
답변:
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 ..
@JoishiBodio가 pg_stat_statements확장 기능을 사용 하여 느린 쿼리 통계를 볼 수 있다고 말한 방법 . 설치에 어려움을 겪는 사람들을 위해 (내가했던 것처럼) :
pg_stat_statements사용 가능한 확장 프로그램 목록에 있는지 확인하십시오 .
SELECT * FROM pg_available_extensions;postgresql-contrib데비안 / 우분투에서 시스템 패키지 관리자를 통해 패키지를 설치 하십시오 :
sudo apt-get install postgresql-contrib-9.5그런 다음 1 단계를 다시 수행하십시오.
pg_stat_statements로 shared_preload_librariesPostgreSQL의 구성 :경유 postgres.conf:
shared_preload_libraries = 'pg_stat_statements'
명령 줄 인수를 통해 (따옴표 없음) :
postgres -c shared_preload_libraries=pg_stat_statements
그런 다음 데이터베이스에서 확장을 작성하십시오.
CREATE EXTENSION pg_stat_statements;