제18장: OzLockTree - 락 분석 및 해결
안내: 이 장에서는 락 경합으로 인한 데이터베이스 지연 발생 시 프로세스 간 종속성 트리를 시각화하고, 근본 원인(Root Blocker)을 찾아 해결하는 OzLockTree 도구의 활용법을 다룹니다. 서버 관리 도구이므로 SQLite는 지원하지 않습니다.
이 장의 내용:
18.1 실시간 락 종속성 트리 뷰
OzLockTree는 락 대기 관계를 분석하여 계층형 트리 테이블 형태로 표시합니다.
- Root Blocker (루트 블로커): 다른 쿼리들의 실행을 가로막고 있는 최상위 원인 세션을 빨간색으로 강조 표시.
- 대기 중인 쿼리 목록: 어떤 세션이 누구의 락 해제를 기다리고 있는지 계층적으로 표현.
팁: 행마다 표시되는 관계 요약을 확인하여 어떤 쿼리가 병목을 유발하는지 즉시 파악할 수 있습니다.
18.2 Kill Query와 Kill Connection의 차이
프로세스를 종료할 때 2가지 단계별 안전 옵션을 제공합니다:
- Kill Query (안전): 락을 잡고 있는 해당 SQL 문만 취소하고, 클라이언트의 연결 세션 자체는 유지합니다.
- Kill Connection (위험): 데이터베이스 서버 레벨에서 해당 연결 세션을 강제 종료합니다.
경고: 항상 Kill Query를 먼저 시도하고, 세션이 응답하지 않을 때만 Kill Connection을 사용하십시오.
18.3 장시간 방치된 미커밋 트랜잭션 감지
BEGIN을 실행한 뒤 COMMIT이나 ROLLBACK 없이 방치된 트랜잭션은 락 장애의 가장 흔한 원인입니다. OzLockTree는 5분(300초) 이상 방치된 미커밋 트랜잭션을 자동으로 감지하여 시각적 경고를 표시합니다.