본문으로 건너뛰기

락 트리

락 트리 화면에서는 잠금(Lock)으로 인해 서로 대기하는 세션을 트리 형태로 확인할 수 있습니다. 어떤 세션이 자원을 쥐고 있고(holder) 어떤 세션이 그것을 기다리는지(waiter) 부모와 자식 관계로 보여 줘서, 교착 상태의 원인 세션을 빠르게 찾도록 돕습니다.

락과 락 트리

쉽게 말하면 락은 같은 데이터를 동시에 바꾸지 못하도록 거는 잠금장치입니다. 한 세션이 데이터를 수정하는 동안 다른 세션은 기다려야 합니다. 기다리는 세션이 늘어나 서로 물고 물리면 교착 상태가 됩니다. 락 트리는 이 대기 관계를 나무 모양으로 펼쳐, 맨 위에서 자원을 쥐고 있는 세션(원인)을 찾게 해 줍니다.

기본 화면 안내

화면 상단에서 인스턴스와 데이터베이스를 선택합니다. 먼저 Lock Wait Sessions 차트에서 락 대기가 발생한 시점을 선택하면, 그 시점의 Lock Tree와 Total Locks를 확인할 수 있습니다. 수 분 이상 지속된 락을 짚어 주므로 오래 묶여 있는 잠금을 빠르게 찾을 수 있습니다.

영역설명
Lock Wait Sessions시간대별 락 대기 세션 수 차트. 조회할 시점을 선택
Lock Tree선택 시점의 잠금 대기 관계를 트리로 표시
Total Locks선택 시점의 전체 락 수

컬럼 안내

자원을 쥔 세션(holder)과 기다리는 세션(waiter)을 다음 컬럼으로 표시합니다.

ColumnDescription
instance세션이 실행 중인 노드
node_id노드 식별자
session_id세션 ID
db사용 중인 데이터베이스
user접속 사용자
tx_state트랜잭션 상태
lock_type잠금 유형
row_locks행 잠금 수
partition_locks파티션 잠금 수
activity작업 이름
raw_task실행 중인 SQL 원문
sql_paramSQL 파라미터
command실행 중인 명령 종류
elapsed_time_ms수행 시간 (밀리초)

여기서 헷갈릴 수 있는 부분은 세션을 식별하는 방식입니다. MySQL은 세션 ID 하나로 식별하지만, SingleStore는 분산 환경이라 노드 식별자와 세션 ID를 함께(node_id + session_id) 매칭 키로 사용합니다. 같은 세션 ID라도 노드가 다르면 다른 세션이기 때문입니다. row_locks·partition_locks는 분산 환경에서 잠금이 행 단위인지 파티션 단위인지 구분해 줍니다.

락 해소

원인 세션(holder)을 확인한 뒤 필요하면 해당 세션을 중지할 수 있습니다. 세션 중지 방법은 세션 히스토리인스턴스 모니터링 문서를 참조하세요.