Search

9-2-4. pg_stat_activity

-- [SQL-9-2-4-a] A 세션 -- A 세션 -- A 세션 pid 확인(3248) SELECT pg_backend_pid(); -- 1. 명시적 트랜잭션 시작 BEGIN; -- 3. ACC1 잔액 변경 UPDATE startdbpg.ms_acc t1 SET bal_amt = bal_amt-500 WHERE t1.acc_no = 'ACC1'; -- 5. 변경된 데이터 반영 COMMIT;
SQL
복사
-- [SQL-9-2-4-a] B 세션 -- B 세션 -- B 세션 pid 확인(3249) SELECT pg_backend_pid(); -- 2. 명시적 트랜잭션 시작 BEGIN; -- 4. ACC1 잔액 변경(WAIT) UPDATE startdbpg.ms_acc t1 SET bal_amt = bal_amt-500 WHERE t1.acc_no = 'ACC1'; -- 6. 변경된 데이터 반영 COMMIT;
SQL
복사
-- [SQL-9-2-4-a] C 세션 -- C 세션(모니터링 세션) -- 5. 세션 상태 확인 SELECT t1.pid ,t1.wait_event_type ,t1.state ,pg_blocking_pids(t1.pid) AS blk_by FROM pg_stat_activity t1 WHERE pg_blocking_pids(t1.pid) != '{}'; -- 6. 블록커 세션 확인 -- 5번에서 확인한 blk_by를 pid 조건으로 SELECT t1.pid ,t1.wait_event_type ,t1.state ,pg_blocking_pids(t1.pid) AS blk_by FROM pg_stat_activity t1 WHERE t1.pid = 3248;
SQL
복사