피드로 돌아가기
DB Locking 101 for Serverless Devs
Dev.toDev.to
Database

p99 Latency 30초 폭증을 해결하는 DB Locking 전략과 Sharding 설계

DB Locking 101 for Serverless Devs

srinu madhav vysyaraju2026년 4월 27일11intermediate

Context

Serverless 환경에서 대규모 동시 요청 발생 시 Row-level Lock으로 인한 요청 큐 적체 현상 분석. 단순 UPDATE 문 실행만으로도 배타적 잠금이 발생하여 p99 Latency가 50ms에서 30초로 급증하는 병목 지점 확인.

Technical Solution

  • Optimistic Locking 도입을 통한 Lock-free 읽기 구현 및 Version 컬럼 기반의 쓰기 충돌 검증
  • 재시도 루프를 결합한 Optimistic 전략으로 대기 시간을 빠른 재시도 주기로 전환하여 처리량 개선
  • 높은 경합이 예상되는 Hot Row에 대해 N개의 인벤토리 로우로 분산하는 Sharding 기법 적용
  • 트랜잭션 내 외부 API 호출 등 비용 높은 작업 발생 시 SELECT FOR UPDATE를 통한 Pessimistic Locking으로 중복 작업 방지
  • 대량의 백그라운드 작업 처리를 위해 SKIP LOCKED 옵션을 활용한 Queue 시맨틱 구조 설계

1. 기본 CRUD는 Read Committed 수준의 격리 레벨 유지

2. 동시 쓰기 경합 발생 시 Version 컬럼 기반 Optimistic Locking 우선 적용

3. 외부 Side-effect가 포함된 고비용 트랜잭션은 SELECT FOR UPDATE로 원자성 보장

4. 극심한 Hot Row 경합은 데이터 분산(Sharding)을 통해 Lock 큐 분산

원문 읽기