PostgreSQL에서 'pg_stat_activity' 통계 정보를 이용한 현재 실행 중인 쿼리를 조회하는 방법을 소개합니다.
현재 14.5 버전을 사용하고 있으며 버전에 따라 차이가 있을 수 있습니다.
SELECT * FROM pg_stat_activity ORDER BY query_start ASC ;
SELECT pg_cancel_backend(pid (int)) ;
track_activity_query_size = 1024
track_activities = on
매개변수 | 설명 |
---|---|
track_activity_query_size | 기본 값은 '1024' 이며 'pg_stat_activity.query' 컬럼의 길이를 바이트 단위로 기록합니다. (서버 재기동 필요) |
track_activities | 기본 값은 'on'이고 정보 수집 활성화 옵션입니다. 'off'면 쿼리문 확인이 되지 않습니다 |
열 | 유형 | 설명 |
---|---|---|
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"일때만 현재 실행 중인 쿼리이고 그 외에는 마지막에 실행된 쿼리 |
select running_cnt, tot_cnt
from
(
select count(*) as running_cnt
from pg_stat_activity
where state = 'active'
)a,
(
select count(*) as tot_cnt
from pg_stat_activity
) b
;
running_cnt | tot_cnt
-------------+---------
1 | 6
(1 row)
Time: 1.699 ms