2014-02-07 4 views
0

현재 응용 프로그램에서 "유휴 상태의 트랜잭션"시나리오를 디버깅하려고합니다. pg_state_activity를보고 '유휴 상태의 트랜잭션'상태의 쿼리에 대한 프로세스 ID와 트랜잭션 시작 시간을 확인할 수 있습니다 .주어진 트랜잭션의 모든 쿼리

select pid,query from pg_stat_activity where state='idle in transaction' OR state='idle' 

'트랜잭션 대기'와 쿼리에 해당하는 트랜잭션 내에서 실행되는 모든 쿼리의 목록을 식별 할 수있는 방법이 있나요

답변

2

당신이 운영하는 이전의 모든 문 의 목록을 시도하고 있습니까 트랜잭션에서 유휴 상태로 표시되는 트랜잭션?

그렇다면 SQL 수준에서 쉽고 안전한 방법은 없습니다. CSV 로깅 모드를 사용하여 쿼리 기록을 분석하고 쿼리를 트랜잭션으로 그룹화해야합니다. 편의상 SQL을 사용하여이 작업을 수행 할 수 있습니다. CSV를 PostgreSQL 테이블에 추가하여보다 쉽게 ​​분석 할 수 있습니다 (COPY).

또는 일반 텍스트 로그를 사용하고 트랜잭션 ID와 프로세스 ID가 포함 된 log_line_prefix을 설정하십시오.

(나는 디버깅을 위해 쿼리 추적을 수집했지만 디버거를 찾지 못했지만 지금은 찾을 수 없다는 것을 알았습니다. 문제가있는 연결에서 명령을 실행해야하므로 유용하다고 확신하지 못합니다. to 수집 된 데이터 추출).