락 트리 & 데드락
하루 동안 발생한 Lock의 추이를 분석할 수 있습니다. Lock을 발생시킨 세션(Lock Holder)과 Lock을 대기하고 있는 세션(Lock Waitier)에 대해 트리 구조로 확인할 수 있습니다. 이러한 기능을 통해 특정 시점 발생한 락 정보 Holder와 Waiter 관계를 확인해 쿼리(Query)를 분석하고 교착 상태(Dead Lock)의 쿼리를 확인할 수 있습니다.
락 트리
홈 화면 > 프로젝트 선택 > 분석 > 락 트리
하루 동안의 락 발생 여부와 시간을 시계열 차트/락 트리로 제공합니다. 락이 최초 발생한 지점부터 holder와 waiter의 구조를 트리 형태로 표현하여 제공합니다. 락 트리를 시간의 흐름으로 확인할 수 있습니다.
- 시간별 락 트렌드 시각화: 1-Min Lock Trends와 Lock Wait Sessions 기능을 통해 락 발생 데이터를 시간 단위로 분석할 수 있습니다.
기본 사용 안내
원하는 날짜와 시간을 설정한 다음
목록에서 인스턴스를 선택하세요. 설정한 시간에 락이 발생했다면 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 Trends와 Lock Tree 테이블의 시간이 설정됩니다. 이를 통해 락이 가장 많이 발생한 구간을 찾을 수 있습니다.
Lock Wait Sessions는 그대로 두고 1-Min Lock Trends 차트에서 다른 시간대의 바를 클릭한 경우, 해당 분의 최대 락 개수를 가진 초로 Lock Tree 테이블에 시간 범위가 동기화됩니다. 이를 통해 시간대를 변경할 때 Lock Tree 테이블에서 반영된 정보를 확인할 수 있습니다.
-
3시간 이상 조회 시 (5분 단위 데이터 사용)
조회 시점부터 5분 구간에서 바의 색상이 진하게 표시됩니다.
07:15:00
시점을 클릭한 경우,07:15:00~07:20:00
구간 바 차트 색이 진하게 표시됩니다. -
3시간 미만 조회 시 (5초 단위 데이터 사용)
짧은 시간 간격에서 발생한 락 상황을 분석할 때 유용합니다.
- Active session
- Lock tree
- Process information
항목 | 설명 |
---|---|
Instance Name | 인스턴스 명 |
id | connection 식별자 |
user | SQL 수행 계정 |
host | 이 스레드가 연결된 hostname |
db | default database명, 없다면 NULL |
command | 수행 중인 명령어 type(Query/Sleep/Daemon 등) |
time | 현재 COMMAND의 수행 시간(초) |
state | 스레드의 현재상태 (executing/updating/sending data 등) |
query | 실행되고 있는 statement, Processlist.info 에서 리터럴 값을 분리한 SQL을 보여줍니다. |
query_param | query 에서 분리한 리터럴 값 |
type | Thread 타입. FOREGROUND/BACKGROUND 등 |
connection_type | Connection을 맺는데 사용하는 protocol. TCP/IP, SSL/TLS |
항목 | 설명 |
---|---|
holder type | holder 세션의 type |
lock mode | holder_mode |
waiter type | waiter 세션의 type |
lock request | waiter_mode |
state | 현재 프로세스가 진행 중인 단계입니다. |
table | holder_table/waiter_table |
index | holder_index/waiter_index |
다음 항목은 XOS 에이전트를 설치한 경우 수집되는 지표입니다.
항목 | 설명 |
---|---|
cputime | CPU 사용 시간 |
cpuusage | CPU 사용률 |
elapse | CPU 사용 경과 시간 |
vsize | 가상 메모리 사이즈(Kb) |
rss | Resident Set Size(RSS), 프로세스와 관련한 물리적 페이지 수 |
state | 프로세스 상태 |
ioread | 블록을 읽는 데 소요된 실제 시간(milliseconds) |
iowrite | 블록을 쓰는 데 소요된 실제 시간(milliseconds) |
pss | 프로세스 고유 메모리 사용량 + 하나의 프로세스가 차지하는 공유 메모리 비율 |
uid | user id |
cmd | 수행 중인 명령어 |
longcmd | cmd의 전체 경로 |
데드락
홈 화면 > 프로젝트 선택 > 분석 > 데드락
데드락(Dead Lock)은 둘 이상의 프로세스 또는 트랜잭션이 각각 다른 트랜잭션에 필요한 데이터베이스 리소스(테이블 또는 행)를 잠궈서 서로가 진행하지 못하도록 차단할 때 발생합니다. 빈번하게 발생하는 데드락은 최종 사용자에게 불편함을 주고 서비스의 품질을 저하시킵니다. 데드락 메뉴에서는 데드락이 발생한 시점과 이와 관련한 정보를 조회할 수 있습니다. 이 정보는 얘플리케이션 설계에서 문제를 식별하고 해결하는데 도움이 될 수 있습니다.
데이터베이스에서 발생한 데드락에 대한 정보를 확인할 수 있습니다.
-
시간에서 조회하고 싶은 시간을 설정하세요.
-
인스턴스에서 조회하려는 인스턴스 이름을 선택하세요.
-
버튼을 선택하세요.
조회한 데드락 정보를 테이블 형태로 제공합니다.
-
조회 시간은 최대 3주까지 선택할 수 있습니다.
-
시간 옵션 이용 방법에 대한 자세한 내용은 다음 문서를 참조하세요.