Postgres : 데이터베이스 서버에서 실행중인 모든 SQL 문을 어떻게 볼 수 있습니까?


23

성능상의 이유로 응용 프로그램이 데이터베이스에 대해 만드는 모든 SQL 문을 검토하는 중입니다. PostgreSQL 데이터베이스 서버에서 실행되는 모든 명령문을 쉽게 기록 할 수 있습니까? 감사.


이 설명에서는 현재 실행중인 쿼리를 보는 방법에 대해 설명합니다. tutorialba.com/2016/11/pgstatactivity-view-explanation-in.html
nijam

답변:


27

찾고자하는 설정 옵션은 log_statement = "all"(만약 당신이 문장을 원한다면), 또는 log_min_statement_duration = <some number>"느린"쿼리 바로 뒤에있는 것입니다 (일부 "느린"값). 로깅 구성에 대한 자세한 내용 은 http://www.postgresql.org/docs/current/static/runtime-config-logging.html 을 참조 하십시오 .


1
모든 진술을 기록하는 것은 (공식 문서에 명시된 바와 같이) 성능 저하입니다. 그러나 8.4는 explain analyze실행 된 타이에서 느린 쿼리를 얻는 좋은 기능을 가지고 있습니다. 8.4가 아직 릴리스되지 않았기 때문에 테스트를 시작하고 싶을 수도 있지만 실행시 발생 했는지 알 수있는 좋은 옵션 입니다 의 출력은 아마 당신은 I / O 나 CPU 경계 문제로 실행하는 OK입니다 설명, 분석,하지만 적어도 당신은 쿼리 자체가 아니라 알 수있는 경우
serverhorror

5
나는 log_statement = 'mod'옵션을 정말로 좋아합니다. 작성, 업데이트 및 삭제 만 표시하고 모든 select 문을 건너 뜁니다. 어떤 코드가 어떤 필드를 수정하고 있는지 알아 내려고 할 때 좋습니다.
돈 커크비

5

auto_explain모듈은 매우 유용합니다. 명령문뿐만 아니라 실행 계획도 기록하고 PL / PgSQL 함수 내에서 실행되는 명령문도 기록 할 수 있습니다. 분석을 사용하지 않으면 성능 저하가 상당히 적습니다.이 경우 모든 쿼리에 대해 약간의 타이밍 오버 헤드가 발생합니다.

auto_explain설명서를 참조하십시오 .


"auto_explain"은 모듈이므로 AWS RDS Postgres 데이터베이스에서 실행되지 않습니다. (
johntellsall

1
@johntellsall RDS는 auto_explain이 모듈을 축복 모듈 목록에 있습니다. docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Craig Ringer

3

물론 가장 느린 쿼리를 직접 감지 할 수 있지만 PostgreSQL 로그 분석기 인 pgFouine 을 사용하는 것이 좋습니다 . 설치가 쉽고 정말 유용합니다.

샘플 보고서 : herehere .


프로젝트에서 pgFouine을 사용하고 인덱스가 많은 도움이 될 몇 가지 장소를 식별했습니다.
Paul Tomblin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.