본문으로 건너뛰기

세션 히스토리

조회 기간 동안 수집된 세션 정보를 시간순으로 조회할 수 있는 화면입니다. 특정 시간대에 어떤 세션이 어떤 SQL을 수행했는지, 각 세션의 상태와 자원 사용량은 어떠했는지를 분석할 수 있습니다.

  • 5초 간격으로 수집된 액티브 세션 스냅샷을 기반으로 데이터를 제공합니다.

  • 세션 추이 차트를 통해 시간대별 세션 수 변화를 시각적으로 파악할 수 있습니다.

  • 필드 패널과 필터를 활용하여 특정 조건의 세션만 조회할 수 있습니다.

세션 히스토리 조회하기

상단 필터에서 조회 조건을 설정하고 필드 패널로 세션을 필터링한 뒤, 세션 추이 차트와 목록을 통해 시간대별 세션 변화와 상태를 확인할 수 있습니다.

기본 옵션

상단 필터 영역에서 시간, 대상 인스턴스, 필터 등을 설정할 수 있습니다.

  • 시간: 조회 시간 범위 선택할 수 있음, 기본 10분 단위로 설정되며, 좌우 화살표로 이동 가능

  • 인스턴스: 조회 대상 DB 인스턴스 선택 가능

  • 필터: 필드별 조건을 추가하여 데이터 필터링, 다중 조건 시 AND 로직이 적용됨

  • 뷰 모드: 테이블 뷰 또는 트리 뷰로 전환할 수 있음

  • 다운로드: CSV 형식으로 내보내기

필드 패널

화면 왼쪽의 필드 패널에서 필터 조건을 쉽게 추가할 수 있습니다.

  1. 필드 패널에서 필드명을 클릭하면 해당 필드의 조건 입력 팝업이 나타납니다.

  2. 연산자와 값을 설정한 후 적용 버튼을 클릭하면 상단 필터에 조건이 추가됩니다.

  3. 상단 검색창으로 필드명을 검색할 수 있습니다. 필터검색 아이콘 버튼을 클릭하면 조건에 만족하는 세션만 차트와 테이블에 표시됩니다.

    • 예를 들어 query 필드에 "sale"을 포함 조건으로 설정하면, SQL 문에 "sale"이 포함된 세션만 조회할 수 있습니다. 다중 조건 적용 시 AND 로직으로 동작합니다.

세션 추이 차트

조회 기간 동안의 액티브 세션 수와 락 대기 세션 수를 바 차트로 표시합니다. X축은 시간, Y축은 세션 수입니다. 최대 1시간 범위로 조회할 수 있습니다.

  • 전체 액티브 세션 수 중 락 대기(Lock Wait) 세션은 빨간색으로 구분하여 표시합니다.
  • 특정 시간대에 총 액티브 세션 수와 그중 락 대기 세션 비율을 시각적으로 파악할 수 있습니다.
  • 차트 영역을 마우스 드래그하면 해당 구간으로 드릴다운하여 상세 분석할 수 있습니다.
  • 차트의 특정 시간을 클릭하면 해당 시간대의 액티브 세션만 하단 테이블에 표시됩니다.

세션 목록 테이블

수집된 세션 정보를 시간순으로 표시합니다. 하단의 페이지네이션을 통해 페이지를 이동할 수 있으며, 페이지당 표시 건수를 설정할 수 있습니다.

컬럼 안내

각 컬럼의 지원 환경은 해당 컬럼의 데이터를 조회할 수 있는 조건을 의미합니다.

  • MySQL: performance_schema.threadsinformation_schema.processlist 조인 결과에서 수집합니다. 모니터링 대상이 MySQL인 경우에만 제공됩니다.

  • MariaDB: information_schema.processlist에서 수집합니다. 모니터링 대상이 MariaDB인 경우에만 제공됩니다.

  • MySQL, MariaDB: 두 DB 모두에서 제공되는 컬럼입니다.

  • XOS: XOS 에이전트를 추가로 설치한 경우에만 조회할 수 있습니다.

  • 공통: DB 종류나 에이전트 설치 여부와 관계없이 항상 제공됩니다.

기본 정보

컬럼설명지원 환경
time세션 정보가 수집된 시각공통
instanceDB 인스턴스 명공통
id세션(프로세스) IDMySQL, 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_paramSQL의 바인드 파라미터 값공통
query_hashSQL 해시값공통
query_id쿼리 IDMariaDB

스레드 및 프로세스

컬럼설명지원 환경
os_idOS 레벨의 스레드 IDMySQL
thread_idMySQL 내부 스레드 IDMySQL
tid스레드 IDMariaDB
type스레드 타입MySQL
name스레드 이름MySQL
connection_type연결 타입MySQL

실행 단계

컬럼설명지원 환경
stage현재 실행 단계MariaDB
max_stage전체 실행 단계 수MariaDB
progress현재 단계의 진행률MariaDB
time_ms수행 시간(밀리초)MariaDB

자원 사용량

컬럼설명지원 환경
cpuusageCPU 사용률XOS
cputimeCPU 사용 시간XOS
memory_used메모리 사용량MariaDB
max_memory_used최대 메모리 사용량MariaDB
rssResident Set Size(물리 메모리 사용량)XOS
pssProportional Set Size(비례 메모리 사용량)XOS
vsize가상 메모리 크기XOS

I/O 및 Row 처리

컬럼설명지원 환경
ioreadI/O 읽기량XOS
iowriteI/O 쓰기량XOS
examined_rows검사한 행 수MariaDB

데이터 해석 가이드

주요 확인 포인트

컬럼의미해석 포인트
command세션의 명령 타입Query: SQL 실행 중, Sleep: 유휴 상태, Daemon: 백그라운드 프로세스
runtime현재 명령의 수행 시간높을수록 장시간 수행 중인 세션 → 락 경합, 비효율 쿼리 가능성
state세션의 현재 상태Waiting on...: 대기 상태 → 락, I/O 대기 원인 확인 필요
examined_rows검사한 행 수높을수록 비효율적 스캔 → 인덱스 점검 필요
cpuusageCPU 사용률높으면 CPU 집약적 쿼리 → 쿼리 최적화 필요

이상 세션 식별

  • runtime이 비정상적으로 높은 세션: 장시간 실행 중인 세션 → 락 경합, 느린 쿼리, 미완료 트랜잭션 확인

  • state가 Waiting 상태인 세션이 다수: 특정 자원에 대한 경합 발생 → 락 원인 분석

  • command가 Sleep이면서 runtime이 긴 세션: 유휴 커넥션이 장시간 유지됨 → 커넥션 풀 설정 점검

  • examined_rows가 높으면서 state가 executing인 세션: 대량 스캔 수행 중 → 인덱스 점검, 쿼리 튜닝

실전 활용 시나리오

시나리오 1. 특정 시간대의 세션 급증 분석

  1. 세션 추이 차트에서 세션 수가 급증한 구간 확인

  2. 해당 시간대의 세션 목록에서 command, state 확인

  3. 동일한 query가 반복되는지, 특정 host에서 집중되는지 분석

  4. 필터를 활용하여 state 또는 command 기준으로 세션 분류

시나리오 2. 장시간 수행 세션 추적

  1. 필드 패널에서 runtime 필터를 추가하여 장시간 수행 세션 조회

  2. 해당 세션의 query를 확인하여 어떤 SQL이 오래 실행되었는지 파악

  3. state를 확인하여 쿼리 수행 중인지, 락 대기 중인지 판단

  4. 필요 시 해당 SQL의 실행 계획(Plan) 확인

시나리오 3. 특정 사용자 또는 호스트의 세션 분석

  1. 필드 패널에서 user 또는 host 필터 추가

  2. 해당 사용자/호스트의 세션 패턴 확인

  3. 비정상적으로 많은 세션이나 장시간 실행 쿼리가 있는지 분석

시나리오 4. 락 경합 원인 분석

  1. 필드 패널에서 state 필터를 추가하여 Waiting 상태의 세션 조회

  2. 대기 중인 세션들의 querydb 확인

  3. 동일한 테이블이나 리소스에 접근하는 세션들을 식별

  4. runtime이 긴 세션이 락을 점유하고 있는지 확인

추가 기능

필터 사용법

  1. 필터 추가 창을 클릭 또는 필드 패널에서 필드명 클릭하세요.

  2. 필터 키를 선택하세요.

    • 문자(String): = (포함), != (미포함)

    • 숫자(Number): == (같음), >= (크거나 같음), <= (작거나 같음)

  3. 값을 입력한 후 적용하세요.

  4. 다중 조건은 AND 로직를 적용하세요.

테이블 컬럼 설정

테이블 헤더의 컬럼 선택 기능을 통해 표시할 컬럼을 추가/삭제하고, 드래그로 순서를 변경할 수 있습니다.