락 트리
하루 동안 발생한 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
항목 | 설명 |
---|---|
pid | 프로세스 ID |
db | 데이터베이스 이름 |
user | SQL 수행 계정 |
application | 클라이언트 애플리케이션 이름 |
client_host | 연결된 클라이언트의 호스트 이름(client_addr 의 역방향 DNS 조회로 보고됨) |
client_addr | 클라이언트의 IP 주소 |
client_port | 클라이언트의 포트 번호(유닉스 소켓을 사용하는 경우 -1) |
query_hash | 쿼리의 해시값(와탭 내부 관리 값) |
query_start | 현재 활성 상태인 쿼리가 시작된 시간(상태가 활성 상태가 아닌 경우 마지막 쿼리가 시작된 시간) |
state | 백엔드 프로세스의 현재 상태(active/idle 등) |
state_change | state가 변경된 최근 시간 |
xact_start | 해당 프로세스의 현재 트랜잭션이 시작된 시간(활성 트랜잭션이 없는 경우 null ) |
backend_start | 해당 백엔드 프로세스가 시작된 시간 |
backend_xmin | 해당 백엔드 프로세스가 처리 중인 xid 의 최소값 |
backend_type | 해당 백엔드 프로세스의 유형, autovacuum worker , logical replication launcher , client backend , checkpointer 등 |
backend_xid | 해당 백엔드가 사용 중인 xid |
wait_event_type | 해당 백엔드 프로세스가 대기 중인 이벤트 type |
wait_event | 해당 백엔드 프로세스가 현재 대기 중인 경우 대기 이벤트 이름 |
와탭은 클라이언트와 관련한 정보를 기본 저장합니다.
항목 | 설명 |
---|---|
holder_relation | holder 세션이 락을 보유 중인 객체(테이블 또는 인덱스) |
holder_type | holder 세션의 type (transaction id, tuple 등) |
lock_mode | holder_mode (exclusive lock, shared lock 등) |
lock_request | waiter_mode (exclusive lock, shared lock 등) |
state | 각 세션(벡엔드 프로세스)의 현재 상태 |
waiter_relation | waiter 세션이 락 획득을 대기 중인 객체 |
waiter_type | waiter 세션의 type (transaction id, tuple 등) |
다음 항목은 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의 전체 경로 |