전체 차단 postgres 쿼리를 보는 방법은 무엇입니까?


9

이 페이지 의 문장을 사용하여 Postgres의 차단 쿼리를 봅니다.

SELECT bl.pid                 AS blocked_pid,
         a.usename              AS blocked_user,
         ka.query               AS blocking_statement,
         now() - ka.query_start AS blocking_duration,
         kl.pid                 AS blocking_pid,
         ka.usename             AS blocking_user,
         a.query                AS blocked_statement,
         now() - a.query_start  AS blocked_duration
  FROM  pg_catalog.pg_locks         bl
   JOIN pg_catalog.pg_stat_activity a  ON a.pid = bl.pid
   JOIN pg_catalog.pg_locks         kl ON kl.transactionid = bl.transactionid AND kl.pid != bl.pid
   JOIN pg_catalog.pg_stat_activity ka ON ka.pid = kl.pid
  WHERE NOT bl.granted;

그러나 쿼리는 잘려서 일반적으로 WHERE이러한 차단 문제 디버깅을 매우 어렵게 만드는 절의 내용을 볼 수 없습니다 . postgres에 전체 쿼리를 기록하도록 할 수있는 설정이 있습니까?pg_stat_activity

답변:


11

추적 된 쿼리 길이는 매개 변수에서 찾을 수 있습니다 track_activity_query_size.

18.8.1. 쿼리 및 인덱스 통계 수집기

track_activity_query_size (integer)

pg_stat_activity.current_query필드에 대해 각 활성 세션에 대해 현재 실행중인 명령을 추적하기 위해 예약 된 바이트 수를 지정합니다 . 기본값은 1024 입니다. 이 매개 변수는 서버 시작시에만 설정할 수 있습니다.

예를 들어 구성에 있다면 track_activity_query_size=16384최대 16k의 쿼리 텍스트가 수집됩니다.


1
따옴표로 표시 한대로 간과 할 수 있습니다. 구성 옵션을 변경하면 서버를 다시 시작해야 적용됩니다.
Joishi Bodio
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.