본문으로 건너뛰기

세션 히스토리

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

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

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

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

세션 히스토리 조회하기​

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

기본 옵션​

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

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

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

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

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

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

필드 패널​

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

  1. 필드명을 클릭하면 조건 입력 팝업이 나타납니다.

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

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

    • 예를 들어 query 필드에 특정 키워드를 포함 조건으로 설정하면, 해당 키워드가 포함된 SQL을 수행하는 세션만 조회할 수 있습니다. 다중 조건 적용 시 AND 로직으로 동작합니다.

세션 추이 차트​

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

  • 전체 액티브 세션 수 중 락 대기(Lock Wait) 세션은 빨간색으로 구분하여 표시합니다.

  • 특정 시간대에 총 액티브 세션 수와 그중 락 대기 세션 비율을 시각적으로 파악할 수 있습니다.

  • 차트 영역을 마우스 드래그하면 해당 구간으로 드릴다운하여 상세 분석할 수 있습니다.

  • 차트의 특정 시간을 클릭하면 해당 시간대의 액티브 세션만 하단 테이블에 표시됩니다.

세션 목록 테이블​

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

컬럼 안내​

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

  • PostgreSQL: pg_stat_activity 뷰에서 수집합니다. PostgreSQL 버전에 따라 제공되는 컬럼이 다를 수 있습니다.

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

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

기본 정보​

컬럼설명지원 환경
time세션 정보가 수집된 시각공통
instanceDB 인스턴스 명공통
pid백엔드 프로세스 IDPostgreSQL
datname접속 중인 데이터베이스 명PostgreSQL
usename접속 사용자 명PostgreSQL
client_addr클라이언트 IP 주소PostgreSQL
client_hostname클라이언트 호스트 명PostgreSQL
client_port클라이언트 포트 번호PostgreSQL
application_name클라이언트 애플리케이션 명PostgreSQL

실행 정보​

컬럼설명지원 환경
state세션의 현재 상태 (active, idle, idle in transaction 등)PostgreSQL
runtime현재 쿼리의 수행 시간 (초)PostgreSQL
xact_runtime현재 트랜잭션의 수행 시간 (초)PostgreSQL
wait_event현재 대기 중인 이벤트 명PostgreSQL
wait_event_type대기 이벤트의 타입 (Lock, LWLock, IO, IPC 등)PostgreSQL 9.6 이상
state_change마지막으로 상태가 변경된 시각PostgreSQL
query실행 중인 SQL 문PostgreSQL
query_paramSQL의 바인드 파라미터 값공통
query_hashSQL 해시값공통

시간 정보​

컬럼설명지원 환경
xact_start현재 트랜잭션 시작 시각PostgreSQL
query_start현재 쿼리 시작 시각PostgreSQL
backend_start백엔드 프로세스 시작 시각PostgreSQL

백엔드 정보​

컬럼설명지원 환경
backend_type백엔드 프로세스 타입 (client backend, autovacuum worker 등)PostgreSQL 10 이상
backend_xid백엔드의 현재 트랜잭션 IDPostgreSQL 9.4 이상
backend_xmin백엔드의 xmin horizonPostgreSQL 9.4 이상
query_id쿼리 IDPostgreSQL 14 이상

자원 사용량​

컬럼설명지원 환경
cpuusageCPU 사용률XOS
cputimeCPU 사용 시간XOS
rssResident Set Size (물리 메모리 사용량)XOS
pssProportional Set Size (비례 메모리 사용량)XOS
vsize가상 메모리 크기XOS
ioreadI/O 읽기량XOS
iowriteI/O 쓰기량XOS

데이터 해석 가이드​

주요 확인 포인트​

컬럼의미해석 포인트
state세션의 현재 상태active: SQL 실행 중, idle in transaction: 트랜잭션 내 유휴 상태 → 장시간 유지 시 락 원인 가능
runtime현재 쿼리의 수행 시간높을수록 장시간 수행 중인 쿼리 → 튜닝 대상
xact_runtime현재 트랜잭션의 수행 시간높을수록 장시간 유지 중인 트랜잭션 → 락 경합, vacuum 지연 원인 가능
wait_event대기 중인 이벤트Lock 계열: 락 경합 발생, IO 계열: 디스크 I/O 병목
cpuusageCPU 사용률높으면 CPU 집약적 쿼리 → 쿼리 최적화 필요

이상 세션 식별​

  • runtime이 비정상적으로 높은 세션: 장시간 실행 중인 쿼리 → 실행 계획 점검, 인덱스 튜닝

  • state가 idle in transaction이면서 xact_runtime이 긴 세션: 트랜잭션이 열린 채 유휴 상태 → 다른 세션의 락 대기 원인, vacuum 지연 유발

  • wait_event가 Lock 계열인 세션이 다수: 특정 테이블이나 Row에 대한 락 경합 → 트랜잭션 패턴 점검

  • wait_event_type이 IO인 세션: 디스크 I/O 병목 → 쿼리 최적화, shared_buffers 등 메모리 설정 점검

실전 활용 시나리오​

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

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

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

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

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

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

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

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

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

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

시나리오 3. idle in transaction 세션 점검​

  1. 필드 패널에서 state 필터에 "idle in transaction" 조건 추가

  2. xact_runtime이 긴 세션을 확인하여 트랜잭션이 얼마나 오래 열려 있는지 파악

  3. 해당 세션의 application_name과 client_addr로 원인 애플리케이션 식별

  4. 장시간 유지되는 트랜잭션은 다른 세션의 락 대기와 vacuum 지연을 유발할 수 있으므로 주의

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

  1. 세션 추이 차트에서 빨간색(락 대기) 비율이 높은 구간 확인

  2. 필드 패널에서 wait_event_type 필터에 "Lock" 조건 추가

  3. 대기 중인 세션들의 query와 datname을 확인하여 경합 대상 파악

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

추가 기능​

필터 사용법​

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

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

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

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

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

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

테이블 컬럼 설정​

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