WEBBOOK CHAPTER

PostgreSQL 18, 입문에서 시니어까지: 39장. Lock Tree를 blocker부터 푼다

39장. Lock Tree를 blocker부터 푼다

느린 session과 blocked session을 혼동하지 않는다. pg_blocking_pids(pid)로 직접 blocker를 찾고, blocker가 또 기다리면 root까지 tree를 만든다. query text, transaction 시작, application name, client, lock type·mode, 업무 영향과 owner를 사건 기록에 남긴다. PID만 보고 kill하지 않는다.

취소는 pg_cancel_backend로 현재 query를 멈출 수 있는지 먼저 보고, transaction 자체가 문제면 승인 후 terminate를 검토한다. commit unknown과 application retry가 중복 주문을 만들지 확인한다. 실습은 두 session의 lock 순서를 바꿔 deadlock을 재현하고 server victim 선택, rollback 범위, retryable 조건을 기록한다.