Learning
토픽 165 / 201·NewSQL 및 특수 목적 DB

Lock Escalation (잠금 상승)

Lock Escalation (잠금 상승)

데이터베이스에서 많은 수의 행 수준(Row-Level) 잠금이 발생할 때 시스템이 자동으로 테이블 수준(Table-Level) 잠금으로 상승시켜 잠금 관리 오버헤드를 줄이는 메커니즘

목적: 잠금 메모리 절약, 잠금 관리 오버헤드 감소, 시스템 안정성

특징: 자동 발생, 임계치 기반, 동시성 저하 가능, DBMS별 설정 가능

동작 원리

DBMS별 구현

  • SQL Server: 5000개 이상 행 잠금 시 자동 상승, sp_configure로 조정
  • Oracle: 자동 상승 없음, 수동 LOCK TABLE 사용
  • MySQL InnoDB: Lock Escalation 미지원, 행 잠금 유지
  • PostgreSQL: Lock Escalation 미지원

문제점

  • 동시성 저하: 테이블 잠금으로 다른 트랜잭션 대기
  • 블로킹 증가: 대기 시간 증가, 데드락 가능성
  • 성능 불규칙: 예측 어려운 성능 저하

방지 전략

  • 대량 작업 배치 분할 (Batch Processing)
  • 적절한 인덱스 사용 (잠금 범위 축소)
  • Lock Escalation 비활성화 (SQL Server: ALTER TABLE ... SET LOCK_ESCALATION = DISABLE)

장점: 메모리 절약, 잠금 관리 단순화, 시스템 안정성

단점: 동시성 저하, 블로킹 증가, 예측 어려움

적용사례: SQL Server 대량 배치 작업, ETL 프로세스, 대용량 데이터 처리

기술요소: Row Lock, Table Lock, 임계치, 잠금 관리자, Lock Escalation Threshold

비교: Row Lock(높은 동시성) vs Page Lock(중간) vs Table Lock(낮은 동시성)

연관: 동시성 제어, 잠금, 트랜잭션, 데드락, 블로킹