세션 히스토리
조회 기간 동안 수집된 세션 정보를 시간순으로 조회할 수 있는 화면입니다. 특정 시간대에 어떤 세션이 어떤 SQL을 수행했는지, 각 세션의 상태와 자원 사용량은 어떠했는지를 분석할 수 있습니다.
-
5초 간격으로 수집된 액티브 세션 스냅샷을 기반으로 데이터를 제공합니다.
-
세션 추이 차트를 통해 시간대별 세션 수 변화를 시각적으로 파악할 수 있습니다.
-
필드 패널과 필터를 활용하여 특정 조건의 세션만 조회할 수 있습니다.
세션 히스토리 조회하기
상단 필터에서 조회 조건을 설정하고 필드 패널로 세션을 필터링한 뒤, 세션 추이 차트와 목록을 통해 시간대별 세션 변화와 상태를 확인할 수 있습니다.
기본 옵션
상단 필터 영역에서 시간, 대상 인스턴스, 필터 등을 설정할 수 있습니다.
-
시간: 조회 시간 범위 선택할 수 있음, 기본 10분 단위로 설정되며, 좌우 화살표로 이동 가능
-
인스턴스: 조회 대상 DB 인스턴스 선택 가능
-
필터: 필드별 조건을 추가하여 데이터 필터링, 다중 조건 시 AND 로직이 적용됨
-
뷰 모드: 테이블 뷰 또는 트리 뷰로 전환할 수 있음
-
다운로드: CSV 형식으로 내보내기
필드 패널
화면 왼쪽의 필드 패널에서 필터 조건을 쉽게 추가할 수 있습니다.
-
필드 패널에서 필드명을 클릭하면 해당 필드의 조건 입력 팝업이 나타납니다.
-
연산자와 값을 설정한 후 적용 버튼을 클릭하면 상단 필터에 조건이 추가됩니다.
-
상단 검색창으로 필드명을 검색할 수 있습니다. 필터 옆
버튼을 클릭하면 조건에 만족하는 세션만 차트와 테이블에 표시됩니다.
- 예를 들어
query필드에 "sale"을 포함 조건으로 설정하면, SQL 문에 "sale"이 포함된 세션만 조회할 수 있습니다. 다중 조건 적용 시 AND 로직으로 동작합니다.
- 예를 들어
세션 추이 차트
조회 기간 동안의 액티브 세션 수와 락 대기 세션 수를 바 차트로 표시합니다. X축은 시간, Y축은 세션 수입니다. 최대 1시간 범위로 조회할 수 있습니다.
- 전체 액티브 세션 수 중 락 대기(Lock Wait) 세션은 빨간색으로 구분하여 표시합니다.
- 특정 시간대에 총 액티브 세션 수와 그중 락 대기 세션 비율을 시각적으로 파악할 수 있습니다.
- 차트 영역을 마우스 드래그하면 해당 구간으로 드릴다운하여 상세 분석할 수 있습니다.
- 차트의 특정 시간을 클릭하면 해당 시간대의 액티브 세션만 하단 테이블에 표시됩니다.
세션 목록 테이블
수집된 세션 정보를 시간순으로 표시합니다. 하단의 페이지네이션을 통해 페이지를 이동할 수 있으며, 페이지당 표시 건수를 설정할 수 있습니다.
컬럼 안내
각 컬럼의 지원 환경은 해당 컬럼의 데이터를 조회할 수 있는 조건을 의미합니다.
-
MySQL:
performance_schema.threads와information_schema.processlist조인 결과에서 수집합니다. 모니터링 대상이 MySQL인 경우에만 제공됩니다. -
MariaDB:
information_schema.processlist에서 수집합니다. 모니터링 대상이 MariaDB인 경우에만 제공됩니다. -
MySQL, MariaDB: 두 DB 모두에서 제공되는 컬럼입니다.
-
XOS: XOS 에이전트를 추가로 설치한 경우에만 조회할 수 있습니다.
-
공통: DB 종류나 에이전트 설치 여부와 관계없이 항상 제공됩니다.
기본 정보
| 컬럼 | 설명 | 지원 환경 |
|---|---|---|
time | 세션 정보가 수집된 시각 | 공통 |
instance | DB 인스턴스 명 | 공통 |
id | 세션(프로세스) ID | MySQL, MariaDB |
user | 접속 사용자 명 | MySQL, MariaDB |
host | 접속 호스트 주소 | MySQL, MariaDB |
db | 사용 중인 데 이터베이스 명 | MySQL, MariaDB |
실행 정보
| 컬럼 | 설명 | 지원 환경 |
|---|---|---|
command | 현재 실행 중인 명령 타입(Query, Sleep, Daemon 등) | MySQL, MariaDB |
runtime | 현재 명령의 수행 시간(초) | MySQL, MariaDB |
state | 세션의 현재 상태(executing, Waiting for 등) | MySQL, MariaDB |
query | 실행 중인 SQL 문 | MySQL, MariaDB |
query_param | SQL의 바인드 파라미터 값 | 공통 |
query_hash | SQL 해시값 | 공통 |
query_id | 쿼리 ID | MariaDB |
스레드 및 프로세스
| 컬럼 | 설명 | 지원 환경 |
|---|---|---|
os_id | OS 레벨의 스레드 ID | MySQL |
thread_id | MySQL 내부 스레드 ID | MySQL |
tid | 스레드 ID | MariaDB |
type | 스레드 타입 | MySQL |
name | 스레드 이름 | MySQL |
connection_type | 연결 타입 | MySQL |
실행 단계
| 컬럼 | 설명 | 지원 환경 |
|---|---|---|
stage | 현재 실행 단계 | MariaDB |
max_stage | 전체 실행 단계 수 | MariaDB |
progress | 현재 단계의 진행률 | MariaDB |
time_ms | 수행 시간(밀리초) | MariaDB |
자원 사용량
| 컬럼 | 설명 | 지원 환경 |
|---|---|---|
cpuusage | CPU 사용률 | XOS |
cputime | CPU 사용 시간 | XOS |
memory_used | 메모리 사용량 | MariaDB |
max_memory_used | 최대 메모리 사용량 | MariaDB |
rss | Resident Set Size(물리 메모리 사용량) | XOS |
pss | Proportional Set Size(비례 메모리 사용량) | XOS |
vsize | 가상 메모리 크기 | XOS |
I/O 및 Row 처리
| 컬럼 | 설명 | 지원 환경 |
|---|---|---|
ioread | I/O 읽기량 | XOS |
iowrite | I/O 쓰기량 | XOS |
examined_rows | 검사한 행 수 | MariaDB |
데이터 해석 가이드
주요 확인 포인트
| 컬럼 | 의미 | 해석 포인트 |
|---|---|---|
command | 세션의 명령 타입 | Query: SQL 실행 중, Sleep: 유휴 상태, Daemon: 백그라운드 프로세스 |
runtime | 현재 명령의 수행 시간 | 높을수록 장시간 수행 중인 세션 → 락 경합, 비효율 쿼리 가능성 |
state | 세션의 현재 상태 | Waiting on...: 대기 상태 → 락, I/O 대기 원인 확인 필요 |
examined_rows | 검사한 행 수 | 높을수록 비효율적 스캔 → 인덱스 점검 필요 |
cpuusage | CPU 사용률 | 높으면 CPU 집약적 쿼리 → 쿼리 최적화 필요 |
이상 세션 식별
-
runtime이 비정상적으로 높은 세션: 장시간 실행 중인 세션 → 락 경합, 느린 쿼리, 미완료 트랜잭션 확인 -
state가 Waiting 상태인 세션이 다수: 특정 자원에 대한 경합 발생 → 락 원인 분석 -
command가 Sleep이면서runtime이 긴 세션: 유휴 커넥션이 장시간 유지됨 → 커넥션 풀 설정 점검 -
examined_rows가 높으면서state가 executing인 세션: 대량 스캔 수행 중 → 인덱스 점검, 쿼리 튜닝
실전 활용 시나리오
시나리오 1. 특정 시간대의 세션 급증 분석
-
세션 추이 차트에서 세션 수가 급증한 구간 확인
-
해당 시간대의 세션 목록에서
command,state확인 -
동일한
query가 반복되는지, 특정host에서 집중되는지 분석 -
필터를 활용하여
state또는command기준으로 세션 분류
시나리오 2. 장시간 수행 세션 추적
-
필드 패널에서
runtime필터를 추가하여 장시간 수행 세션 조회 -
해당 세션의
query를 확인하여 어떤 SQL이 오래 실행되었는지 파악 -
state를 확인하여 쿼리 수행 중인지, 락 대기 중인지 판단 -
필요 시 해당 SQL의 실행 계획(Plan) 확인
시나리오 3. 특정 사용자 또는 호스트의 세션 분석
-
필드 패널에서
user또는host필터 추가 -
해당 사용자/호스트의 세션 패턴 확인
-
비정상적으로 많은 세션이나 장시간 실행 쿼리가 있는지 분석