본문 바로가기
WIKI 기술 지식 베이스

SQL Server 데드락 모니터링 구성하기

원문 보기 위키 갱신

Deadlock 뷰를 사용하면 SQL Server 데이터베이스의 데드락 이벤트를 탐색할 수 있어요. 데드락은 두 개 이상의 프로세스가 서로가 리소스를 해제하기를 기다리며 진행하지 못하는 상황을 말해요.

출처: 문서

본문

시작하기 전에

이 가이드의 단계를 따르기 전에 SQL Server용 Database Monitoring을 먼저 구성해야 해요.

지원되는 데이터베이스: SQL Server

지원되는 배포 유형: 모든 배포 유형. Azure DB는 Agent 버전 7.64.0 이상에서 지원돼요.

지원되는 Agent 버전: 7.59.0+

설정 (Setup)

Azure DB를 제외한 모든 배포 유형

  1. SQL Server 데이터베이스 인스턴스에서 Datadog Extended Events (XE) 세션을 만들어요. 인스턴스의 어떤 데이터베이스에서든 세션을 실행할 수 있어요.

참고: Datadog XE 세션이 데이터베이스에 만들어지지 않았다면, 에이전트는 여전히 기본 SQL Server 시스템 상태 XE 세션에서 데드락 이벤트를 수집하려 시도해요.

  CREATE EVENT SESSION datadog
  ON SERVER
  ADD EVENT sqlserver.xml_deadlock_report
  ADD TARGET package0.ring_buffer
  (
    SET MAX_MEMORY = 1024
  )
  WITH (
      MAX_MEMORY = 1024 KB,
      EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
      MAX_DISPATCH_LATENCY = 30 SECONDS,
      MEMORY_PARTITION_MODE = PER_NODE, -- improves performance on multi-core systems (not supported on RDS)
      STARTUP_STATE = ON
  );
  GO

  ALTER EVENT SESSION datadog ON SERVER STATE = START;
  GO

참고: SQL Server용 Amazon RDS를 사용한다면 세션 구성에서 MEMORY_PARTITION_MODE = PER_NODE 줄을 제거하세요. 이 옵션은 RDS 인스턴스에서 지원되지 않아요.

Datadog 에이전트의 sqlserver.d/conf.yaml에서 데드락을 활성화하세요.

  collect_deadlocks: # Renamed from deadlocks_collection in Agent version 7.70.
      enabled: true

Azure DB

  1. SQL Server 데이터베이스에서 Datadog Extended Events (XE) 세션을 만들어요.
  CREATE EVENT SESSION datadog
  ON database
  ADD EVENT sqlserver.database_xml_deadlock_report
  ADD TARGET package0.ring_buffer
  (
    SET MAX_MEMORY = 1024
  )
  WITH (
      MAX_MEMORY = 1024 KB,
      EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
      MAX_DISPATCH_LATENCY = 30 SECONDS,
      STARTUP_STATE = ON
  );
  GO

  ALTER EVENT SESSION datadog ON DATABASE STATE = START;
  GO

Datadog 에이전트의 sqlserver.d/conf.yaml에서 데드락을 활성화하세요.

  collect_deadlocks: # Renamed from deadlocks_collection in Agent version 7.70.
      enabled: true

데드락 이벤트 탐색하기

데드락 뷰에 접근하려면 APM > Database Monitoring > Databases 탭으로 이동해서 SQL Server 호스트를 선택하세요. 다음으로 Queries 탭을 선택한 뒤 Deadlocks 탭을 선택하세요. Deadlocks 탭에서는 희생(victim) 프로세스와 생존(survivor) 프로세스에 대한 세부 정보를 표시하고, 데드락 다이어그램으로 연결되는 링크를 포함해요.

참고: 데드락은 드물게 발생하므로 데드락 정보가 바로 보이지 않을 가능성이 커요.

더 알아보기 (Learn more)