콘텐츠로 건너뛰기
Telemetry
데이터베이스 신뢰성 SQL 레시피

데이터베이스 잠금 대기 및 교착 상태 찾기

사고 수, 대기 기간, 해결되지 않은 잠금 및 감지된 교착 상태를 기준으로 차단된 데이터베이스 작업 지문의 순위를 매깁니다.

중급database_lock_wait_events검토됨 2026-07-28테스트됨 아파치 DataFusion 45.2.0

검토자 Telemetry 제품 팀 . SQL 호환성, 이벤트 계약, 합성 출력 및 운영상의 주의사항. 표준 및 소유권 검토

질문에 답변됨

가장 심각한 잠금 경합을 일으키는 데이터베이스 작업은 무엇입니까?

차단된 애플리케이션 작업을 안정적인 차단자 지문, 대기 시간, 해결 결과와 연결하면 잠금 경합에 대응할 수 있습니다.

이벤트 계약

쿼리가 예상하는 필드

필드유형그것이 존재하는 이유
timestamp_utcTimestamp잠금 대기가 관찰된 시간입니다.
database_nameUtf8승인된 논리적 데이터베이스 이름입니다.
blocked_query_fingerprintUtf8차단된 애플리케이션 작업에 대한 정규화된 레이블입니다.
blocking_query_fingerprintUtf8잠금을 유지하는 작업에 대한 정규화된 레이블입니다.
lock_typeUtf8제어된 잠금 카테고리.
wait_msFloat64관찰된 잠금 대기 시간(밀리초)입니다.
resolvedBoolean차단된 상태로 유지되지 않고 대기가 종료되었는지 여부입니다.
deadlock_detectedBoolean데이터베이스가 교착 상태 결과를 보고했는지 여부입니다.
transaction_idUtf8애플리케이션 안전 트랜잭션 식별자입니다.
environmentUtf8배포 환경.
DataFusion SQL

쿼리 복사

sql
SELECT
  database_name,
  blocked_query_fingerprint,
  blocking_query_fingerprint,
  COUNT(*) AS lock_wait_incidents,
  COUNT(DISTINCT transaction_id) AS affected_transactions,
  AVG(wait_ms) AS average_wait_ms,
  MAX(wait_ms) AS maximum_wait_ms,
  SUM(CASE WHEN NOT resolved THEN 1 ELSE 0 END) AS unresolved_incidents,
  SUM(CASE WHEN deadlock_detected THEN 1 ELSE 0 END) AS deadlocks
FROM database_lock_wait_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
  AND environment = 'production'
GROUP BY
  database_name,
  blocked_query_fingerprint,
  blocking_query_fingerprint
HAVING COUNT(*) >= 3
ORDER BY deadlocks DESC, maximum_wait_ms DESC;

이 읽기 전용 쿼리는 빈 유형의 테이블에 대해 계획되고 실행됩니다. 아파치 DataFusion 45.2.0. 결정론적 샘플 출력은 합성되어 별도로 검토됩니다. 자신의 데이터에 대해 필드 유형, 임계값 및 비즈니스 정의를 검증합니다. 테스트 방법론을 읽어보세요.

쿼리 결과

차단된 작업에 의한 최대 잠금 대기

주문 업데이트에는 더 긴 대기 시간, 해결되지 않은 사건, 감지된 교착 상태가 표시됩니다.

database_nameblocked_query_fingerprintblocking_query_fingerprintlock_wait_incidentsaffected_transactionsaverage_wait_msmaximum_wait_msunresolved_incidentsdeadlocks
app_productionUPDATE orders SET status = ?SELECT order FOR UPDATE881,6003,20022
analytics_productionREFRESH customer_summaryINSERT customer_event6650070000

합성 예제 출력. 운영 결정에 사용하기 전에 자체 이벤트 스키마 및 임계값에 대해 쿼리를 실행하세요.

Maximum lock wait by blocked operation: Find Database Lock Waits and Deadlocks 예제 결과의 합성 maximum_wait_ms 값에 대한 정적 차트
결정론적 예제 출력의 색인 생성 가능한 SVG입니다. 기사, 런북 또는 저작자가 포함된 디자인 검토를 위해 다운로드하세요.

예제 재현

공공 픽스처 다운로드

JSON 번들은 타입이 지정된 이벤트 계약을 포함합니다. reproducible 입력 행, 정확한 SQL, 예상 출력, 검토 참고 사항 및 엔진 버전. CSV에는 표시된 결과가 포함됩니다.

SQL 작동 방식

  1. 1차단 및 차단 지문은 매개변수화된 SQL을 수집하지 않고도 경합 관계를 가시적으로 유지합니다.
  2. 2고유한 트랜잭션 수는 동일한 대기의 반복된 샘플로부터 결과를 보호합니다.
  3. 3교착 상태 및 해결되지 않은 사고는 단순히 높은 평균 대기 시간보다 우선순위가 높습니다.

결정해야 할 극단적인 경우

  • 폴링은 하나의 사건에 대해 여러 가지 관찰을 내보낼 수 있습니다. 거래 또는 사건 식별자를 보존합니다.
  • 데이터베이스 잠금 보기는 민감한 명령문 텍스트를 노출할 수 있습니다. 이벤트를 발생시키기 전에 수집 시 정규화합니다.
  • 예상되는 유지 관리 잠금은 분할될 수 있도록 승인된 워크로드 범주를 포함해야 합니다.

추천 대시보드

  • 바: maximum_wait_ms by blocked_query_fingerprint
  • 테이블: 차단자와 차단된 작업의 지문 쌍
  • 통계: 해결되지 않은 사건 및 교착 상태

알림 안내

사용자에게 표시되는 워크플로에 영향을 미치는 교착 상태 또는 지속적이고 해결되지 않은 경합에 대한 페이지 전용입니다. 경로 유지 경합은 별도로 발생합니다.

알림 설정 읽기

레시피를 활용해 보세요

관련 계측 및 가이드

분석 계속하기

실제 이벤트에서 실행

테이블을 만들고, 필드를 조정하고, 결과를 저장하세요.

무료로 시작하고, 구조화된 이벤트를 보내고, 쿼리 결과를 차트, 공유 대시보드 위젯 또는 알림 입력으로 사용하세요.

API 키 받기