렉 시각에 돌던 긴 쿼리를 찾음. MySQL은 slow query log, PostgreSQL은 pg_stat_activity의 query_start·query를 보고, 같은 시각의 잠금 대기 지표와 배치 일정(크론, DB 이벤트 스케줄러)을 대조함. SQL Server는 lock_escalation 확장 이벤트로 잠금 에스컬레이션을 기록함
이러면 맞음
매번 같은 시각 대량 UPDATE·DELETE·집계 쿼리가 돌고 그동안 잠금 대기와 디스크 이용률이 함께 오름
이러면 아님
그 시각에 긴 쿼리가 없으면 체크포인트(db-checkpoint)나 서버 백업(dk-backup)
확인 수단
인프라 도구로 확인(게임 코드 불필요)
더 알아보기
SQL Server는 한 문장이 행 잠금을 약 5,000개 넘게 잡으면 테이블 잠금으로 바꿉니다(잠금 에스컬레이션). 그 순간 같은 테이블을 쓰는 모든 요청이 멈춥니다. MySQL도 기본 설정에서 범위 조건으로 고치면 행 사이 빈틈까지 잠가(갭 락) 새 행 추가를 막습니다.