본문으로 건너뛰기

락 트리

홈 화면 > 프로젝트 선택 > 분석 > 락 트리

하루 동안의 락 발생 여부와 시간을 시계열 차트/락 트리로 제공합니다. 락이 최초 발생한 지점부터 holder와 waiter의 구조를 트리 형태로 표현하여 제공합니다. 락 트리를 시간의 흐름으로 확인할 수 있습니다.

  • 시간별 락 트렌드 시각화: 1-Min Lock TrendsLock Wait Sessions 기능을 통해 락 발생 데이터를 시간 단위로 분석할 수 있습니다.

기본 사용 안내

Lock tree

원하는 숫자 1 날짜와 시간을 설정한 다음 숫자 2 목록에서 인스턴스를 선택하세요. 설정한 시간에 락이 발생했다면 lock wait sessions와 화면 아래 테이블에 조회한 데이터를 표시합니다.

노트

시간 옵션 이용 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

Lock Wait Sessions

Lock Wait Sessions는 락 대기 세션의 정보를 분석할 수 있는 기능입니다. 조회 기간에 따라 락 대기 세션 데이터를 3시간 이상 조회 시 5분 간격으로, 3시간 미만 조회 시 5초 간격으로 제공합니다. 또한 차트를 드래그하여 시간 범위를 유동적으로 조정할 수 있습니다.

1-Min Lock Trends

Lock Wait Sessions에서 특정 시간대를 클릭하면, 해당 시간 기준으로 15분 전부터 15분 후까지의 총 30분 동안의 락 발생 현황을 시각화하여 표시합니다. 이를 통해 30분 단위로 락 발생 트렌드를 효과적으로 분석할 수 있습니다.

노트

Total Locks는 해당 시간대에 발생한 락의 총 개수를 의미합니다.

시간 조회

Lock Wait Sessions에서 클릭한 시간에 발생한 최대 락 개수를 기준으로 1-Min Lock TrendsLock Tree 테이블의 시간이 설정됩니다. 이를 통해 락이 가장 많이 발생한 구간을 찾을 수 있습니다.

시간 조회1

Lock Wait Sessions는 그대로 두고 1-Min Lock Trends 차트에서 다른 시간대의 바를 클릭한 경우, 해당 분의 최대 락 개수를 가진 초로 Lock Tree 테이블에 시간 범위가 동기화됩니다. 이를 통해 시간대를 변경할 때 Lock Tree 테이블에서 반영된 정보를 확인할 수 있습니다.

시간 조회2

  • 3시간 이상 조회 시 (5분 단위 데이터 사용)

    조회 시점부터 5분 구간에서 바의 색상이 진하게 표시됩니다.

    07:15:00 시점을 클릭한 경우, 07:15:00~07:20:00 구간 바 차트 색이 진하게 표시됩니다.

    5분 팩 조회

  • 3시간 미만 조회 시 (5초 단위 데이터 사용)

    짧은 시간 간격에서 발생한 락 상황을 분석할 때 유용합니다.

    5초 팩 조회

컬럼 정보 안내

각 세션에 대한 세부 정보는 다음 컬럼을 통해 제공합니다.

항목설명
application세션을 생성한 애플리케이션의 이름입니다.
client세션을 생성한 클라이언트의 이름 또는 IP 주소입니다.
db세션이 연결된 데이터베이스의 이름입니다.
elapsed_time세션이 시작된 후 경과된 시간(밀리초 단위)입니다. 잠금이 발생한 이후 얼마나 시간이 흘렀는지 측정하는 데 사용됩니다.
host세션을 생성한 클라이언트 호스트의 이름입니다.
id잠금 세션의 고유 식별자(ID)입니다.
instance에이전트 또는 인스턴스의 이름입니다.
last_wait_type세션이 마지막으로 기다린 대기 유형입니다.
row_count세션에서 처리된 행(row)의 수를 나타냅니다.
query현재 세션에서 실행 중인 SQL 문의 전체 텍스트입니다.
query_param세션에서 실행 중인 SQL 문의 매개변수 값입니다.s
status세션의 현재 상태를 나타냅니다. 예를 들어, running, suspended, sleeping 등이 있으며, 세션이 활성 상태인지, 대기 중인지를 의미합니다.
userSQL Server에 접속한 사용자의 이름입니다.
wait_resource세션이 대기하고 있는 자원(resource)을 나타냅니다.
wait_time세션이 대기 중인 시간(밀리초 단위)입니다.
wait_type세션이 대기 중인 대기 유형을 나타냅니다. 예를 들어, 잠금 대기 또는 IO 대기 등의 정보를 포함합니다.
노트

와탭은 클라이언트와 관련한 정보를 기본 저장합니다.

wait_type

wait_type 컬럼은 SQL Server에서 쿼리나 트랜잭션이 대기 중인 특정 리소스나 이벤트를 나타내는 값입니다. SQL Server는 내부적으로 다양한 대기 유형을 사용하여 시스템 성능을 관리하고 문제를 진단합니다.

I/0 관련 대기

  • PAGEIOLATCH_EX: 데이터 페이지를 읽기 위해 배타적 잠금을 대기합니다.

  • PAGEIOLATCH_SH: 데이터 페이지를 읽기 위해 공유 잠금을 대기합니다.

  • FILEIO: 파일 I/O 작업 중 대기입니다.

락(Lock) 관련 대기

  • LCK_M_X: 배타적 잠금 대기입니다.

  • LCK_M_S: 공유 잠금 대기입니다.

  • LCK_M_U: 업데이트 잠금 대기입니다.

  • RESOURCE_SEMAPHORE': 리소스 세마포어 대기, 메모리 자원을 확보하기 위해 대기하는 경우입니다.

기타 대기

  • CKPACKET: 병렬 쿼리에서 스레드 간 동기화 대기입니다.

  • ASYNC_NETWORK_IO: 네트워크 I/O 작업 중 대기입니다.

  • SLEEP_*: WAITFOR 또는 WAITFOR DELAY 문으로 인해 대기 중입니다.

  • BROKER_* : Service Broker 메시지 대기입니다.

  • LOCK_MANAGER: 잠금 관리 대기, SQL Server의 잠금 관리자와 관련한 대기입니다.

wait_resource

wait_resource 컬럼은 SQL Server에서 실행 중인 요청이 대기하고 있는 리소스에 대한 정보를 제공합니다. 요청이 특정 리소스를 기다리는 상황을 문자열 형식으로 표현하며, 대기 중인 리소스의 구체적인 식별자나 위치를 나타냅니다.

주요 리소스 유형 및 예시는 다음을 참조하세요.

  • PAGE: <file_id>:<page_id>

    데이터 페이지에 대한 대기를 나타냅니다.

    예, PAGE: 1:12345

  • FILE: <file_id>

    데이터 파일 전체에 대한 대기를 나타냅니다.

    예, FILE: 1

  • 0BJECT: <cobject_id>

    특정 테이블에 대한 대기를 나타냅니다.

    예, 0BJECT: 123456

  • DATABASE: <database_id>

    특정 데이터베이스에 대한 대기를 나타냅니다.

    예, DATABASE: 5

  • KEY: <key_id>

    인덱스 키 또는 다른 데이터 구조의 키에 대한 대기를 나타냅니다.

    예, KEY: 67890

  • RID: <file_id>:<page_id>:<row_id>

    wait_resource 컬럼이 RID(Row Identifier)인 경우는 SQL Server의 특정 행(row)에 대한 대기를 나타냅니다. RID는 SQL Server에서 테이블의 특정 행을 식별하는 고유한 식별자입니다.

    예, RID: 1:1234:5678

노트
  • <file_id>는 데이터 파일의 ID를 의미합니다.

  • <page_id>는 페이지의 ID를 의미합니다.

  • <object_id>는 테이블의 ID입니다.

  • <database_1d>는 데이터베이스의 ID입니다.

  • <key_id>는 키의 ID입니다.

  • <row_id>는 페이지 내에서 행을 식별하는 ID입니다.