[PostgreSQL] pg_stat_activity 정보 및 실행중인 쿼리 취소

Ja L·2023년 4월 3일
0

AgensSQL/PostgreSQL

목록 보기
6/37

PostgreSQL에서 'pg_stat_activity' 통계 정보를 이용한 현재 실행 중인 쿼리를 조회하는 방법을 소개합니다.

현재 14.5 버전을 사용하고 있으며 버전에 따라 차이가 있을 수 있습니다.



실행중인 쿼리 확인

SELECT * FROM pg_stat_activity ORDER BY query_start ASC ;


## 실행중인 쿼리 취소 실행 결과는 성공, 실패를 true, false 로 반환합니다.
SELECT pg_cancel_backend(pid (int)) ;

cf ) 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 정보

유형설명
datidoid데이터베이스 OID
datnamename데이터베이스 이름
pidinteger프로세스 ID
usesysidoid사용자 고유번호
usenamename사용자 이름
application_nametext응용프로그램 이름
client_addrinet접속한 IP
client_hostnametext접속한 호스트 이름 / "log_hostname" 매개 변수가 "on"일때만 표시 됨
client_portinteger접속한 TCP 포트 / Unix 소캣은 "-1"
backend_starttimestamp with time zone서버에 접속한 시간
xact_starttimestamp with time zone현재 트랜잭션이 시작된 시간 / 특랜잭션이 없으면 "NULL"
query_starttimestamp with time zone쿼리문이 시작된 시간
state_changetimestamp with time zone"state"의 마지막 수정 시간
waitingboolean대기중인 경우 "true"
statetext
  • active : 쿼리 실행 중
  • idle : 새로운 명령을 기다리는 중
  • idle in transaction : 트랜잭션은 있지만 현재 실행중인 쿼리 없음
  • idle in transaction (aborted) : idle in transaction 비슷하지만 트랜잭션에 오류가 있음
  • fastpath function call : 함수 실행 중
  • disabled : track_activities 무효
querytext"state" 값이 "active"일때만 현재 실행 중인 쿼리이고 그 외에는 마지막에 실행된 쿼리


실행 중인 pid 조회 및 확인

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

profile
DB Engineer

0개의 댓글