PostgreSQL: 실행중인 쿼리 확인 및 실행 취소 방법
PostgreSQL에서 "pg_stat_activity" 통계 정보를 이용한 현재 실행 중인 쿼리를 조회하고 실행 취소하는 방법을 소개합니다.
버전에 따라 차이가 있을 수 있으며 9.4버전을 기준으로 작성했습니다.
실행중인 쿼리 확인하기
SELECT * FROM pg_stat_activity ORDER BY query_start ASC;
실행중인 쿼리 취소하기
실행 결과는 성공, 실패를 true, false로 반환합니다.pid 정보는 위 쿼리에서 확인된 pg_stat_activity.pid 값을 입력합니다.(버전에 따라 pg_stat_activity.procpid 일수도 있습니다.)
SELECT pg_cancel_backend(pid int);
매개 변수 설정
postgresql.conf 파일에 설정된 정보를 확인해주세요.track_activity_query_size = 1024
track_activities = on
매개 변수 | 설명 |
---|---|
track_activity_query_size | 기본 값은 "1024"이고 "pg_stat_activity.query" 컬럼의 길이를 바이트 단위로 기록합니다. 적용할려면 서버를 재 시작해야합니다. |
track_activities | 기본 값은 "on"이고 정보 수집 활성화 여부입니다. "off"이면 쿼리문 확인이 되지 않습니다. |
pg_stat_activity 정보
PostgreSQL 9.4 기준 정보입니다.열 | 유형 | 설명 |
---|---|---|
datid | oid | 데이터베이스 OID |
datname | name | 데이터베이스 이름 |
pid | integer | 프로세스 ID |
usesysid | oid | 사용자 고유번호 |
usename | name | 사용자 이름 |
application_name | text | 응용프로그램 이름 |
client_addr | inet | 접속한 IP |
client_hostname | text | 접속한 호스트 이름 / "log_hostname" 매개 변수가 "on"일때만 표시 됨 |
client_port | integer | 접속한 TCP 포트 / Unix 소캣은 "-1" |
backend_start | timestamp with time zone | 서버에 접속한 시간 |
xact_start | timestamp with time zone | 현재 트랜잭션이 시작된 시간 / 특랜잭션이 없으면 "NULL" |
query_start | timestamp with time zone | 쿼리문이 시작된 시간 |
state_change | timestamp with time zone | "state"의 마지막 수정 시간 |
waiting | boolean | 대기중인 경우 "true" |
state | text |
|
query | text | "state" 값이 "active"일때만 현재 실행 중인 쿼리이고 그 외에는 마지막에 실행된 쿼리 |
함께보기
- PostgreSQL: Viewing Collected Statistics
- PostgreSQL: System Administration Functions
- PostgreSQL: Run-time Statistics
- PostgreSQL: 실시간 통계