PostgreSQL 테이블 locking Issue 해결 순서

나이트 개발자·2023년 10월 19일
0

사용가능한 커넥션수 와 현재 사용중인 커넥션 수

max_connections: 최대 허용 커넥션 수
total_connections: 현재 총 커넥션 수
active_connections: 활성 상태의 커넥션 수
idle_connections: 유휴 상태의 커넥션 수
idle_in_transaction_connections: 트랜잭션 중 유휴 상태의 커넥션 수
other_states: 위의 상태에 속하지 않는 기타 상태의 커넥션 수

SELECT 
    (SELECT setting FROM pg_settings WHERE name = 'max_connections') AS max_connections,
    COUNT(*) as total_connections,
    SUM(CASE WHEN state = 'active' THEN 1 ELSE 0 END) as active_connections,
    SUM(CASE WHEN state = 'idle' THEN 1 ELSE 0 END) as idle_connections,
    SUM(CASE WHEN state = 'idle in transaction' THEN 1 ELSE 0 END) as idle_in_transaction_connections,
    SUM(CASE WHEN state NOT IN ('active', 'idle', 'idle in transaction') THEN 1 ELSE 0 END) as other_states
FROM 
    pg_stat_activity;

현재 사용중인 커넥션 정보 조회

SELECT
  pid,
  usename,
  pg_blocking_pids(pid) AS blocked_by,
  query AS blocked_query,
  state,
  now() - pg_stat_activity.query_start AS duration
FROM
  pg_stat_activity
WHERE
  state != 'idle'
  AND query ~* 'cust02';

SELECT * FROM pg_locks WHERE relation = (SELECT oid FROM pg_class WHERE relname = 'cust02');
SELECT pg_terminate_backend(134844);
-- VACUUM (VERBOSE, ANALYZE) cust02;
profile
개발하면서 또는 프러덕 관리하면서 겪는 기억해둬야하는 내용을 메모장 삼아 남긴다. Google Keep이나 메모 도구에 남기는 것과는 달리 잘 정리할 수 있어서 언젠가 들춰봐야할 내용들을 담은 글들이 게시된다.

0개의 댓글