Tibero Performance Repository
Tibero의 성능 진단을 위해서 제공되는 Tibero Performance Repository에 대해서 설명합니다.
개요
Tibero DBMS는 DBA가 성능 문제를 진단하는데 도움을 주기 위해 다양한 종류의 통계를 제공하고 있습니다. Tibero Performance Repository(이하 TPR)은 이러한 통계 정보를 주기적으로 자동 수집하여 DBA가 이 를 위한 작업을 따로 할 필요가 없어졌고 수집한 통계 자료에 대한 자체적인 분석 리포트 출력 기능을 제 공하여 시스템 부하 분석에 도움을 줄 수 있는 기능입니다.
TPR은 다음의 주요 기능를 수행합니다.
스냅샷 저장 기능
스냅샷 저장 기능은 _vt_jcntstat, v$system_event, v$sqlstats, v$sgastat 등 Tibero의 각종 성능 통계 정 보를 주기적(보통 1시간)으로 테이블에 저장하여 둔다. 이렇게 저장된 정보를 스냅샷이라 부른다. 이렇 게 저장해 놓은 스냅샷 정보를 이용하여 성능 분석 리포트를 만드는 기능을 제공합니다. DBA는 특정 구간 을 지정하여 리포트를 생성하고 이를 이용해 DB의 성능 문제를 진단할 수 있습니다.
세션 상태 저장 기능
세션 상태 저장 기능은 1초에 한번씩 현재 RUNNING 상태인 세션들의 ID와 대기 중인 이벤트 정보를 메모리에 저장해 둔다. 이렇게 저장해 놓은 정보는 v$active_session_history 뷰로 조회할 수 있습니다. 이 뷰를 이용해 DB의 성능 문제를 보다 세밀하게 진단할 수 있습니다. 단, 현재 세션 상태 저장 기능은 부하 상 황에 취약할 수 있으므로 환경에 따라 주기를 더 늘리기를 권장합니다.
TPR 사용법
tip 설정
스냅샷 저장 기능을 사용하려면 tip 파일에 'TIBERO_PERFORMANCE_REPOSITORY=Y'로 설정하고, 세션 상태 저장 기능을 사용하려면 'ACTIVE_SESSION_HISTORY=Y'로 설정하면 됩니다. 대부분의 경우 이 정도면 충분합니다. 이때 TOTAL_SHM_SIZE는 2GB 초과값으로 설정해야 합니다.
그 밖의 설정을 하기 위해서는 다음과 같은 파라미터를 조절합니다.
TIBERO_PERFORMANCE_REPOSITORY
'Y'로 설정하면 스냅샷 저장 기능을 활성화(기본값: Y)
TPR_SNAPSHOT_SAMPLING_INTERVAL
스냅샷을 추출하는 주기를 설정(기본값: 60, 단위: 분)
TPR_SNAPSHOT_RETENTION
스냅샷을 최대 저장할 기간을 설정 (기본값: 7, 단위: 일)
TPR_SNAPSHOT_TOP_SQL_CNT
리포트에 출력할 상위 SQL 개수를 설정 (기본값: 5, 단위: 개)
TPR_SEGMENT_STATISTICS
'Y'로 설정하면 TPRO에서 Segment별 Stat 수집 기능을 활성화 (기본값: N)
TPR_SNAPSHOT_TOP_SEGMENT_CNT
리포트에 출력할 상위 Segment 개수를 설정 (기본값: 5, 단위: 개)
TPR_METRIC
'Y'로 설정하면 TPR METRIC 기능을 활성화 (기본값: N)
TPR_AGGREGATION
'Y'로 설정하면 TPR AGGREGATION 기능을 활성화 (기본값: N)
ACTIVE_SESSION_HISTORY
'Y'로 설정하면 세션 상태 저장 기능을 활성화(기본값: N)
ACTIVE_SESSION_HISTORY_SAMPLING_INTERVAL
세션 상태 저장 주기를 설정 (기본값: 1, 단위: 초)
관련 테이블과 뷰
저장한 스냅샷과 세션 상태는 관련 테이블과 뷰를 통해 확인할 수 있습니다. 7일이 지난 스냅샷과 세션 상태는 테이블에서 삭제됩니다.
스냅샷 저장 기능
_TPR_SNAPSHOT
저장된 스냅샷의 ID와 시간에 관한 정보를 관리
_TPR_BASELINE
등록된 Baseline의 정보를 관리
_TPR_ACTIVE_SESSION_HISTORY
저장된 ASH Sample 정보를 관리
_TPR_METRIC
저장된 TPR Metric 정보를 관리
_TPR_JCNTSTAT
_VT_JCNTSTAT 뷰의 스냅샷 정보를 관리
_TPR_SQLSTATS
V$SQLSTATS 뷰의 스냅샷 정보를 관리
_TPR_SQL_PLAN
V$SQL_PLAN 뷰의 스냅샷 정보를 관리
_TPR_SQL_PLAN_STAT
V$SQL_PLAN_STATISTICS 뷰의 스냅샷 정보를 관리
_TPR_LATCH
V$LATCH 뷰의 스냅샷 정보를 관리
_TPR_SYSTEM_EVENT
V$SYSTEM_EVENT 뷰의 스냅샷 정보를 관리
_TPR_WAITSTAT
V$WAITSTAT 뷰의 스냅샷 정보를 관리
_TPR_SGASTAT
V$SGASTAT 뷰의 스냅샷 정보를 관리
_TPR_PGASTAT
V$PGASTAT 뷰의 스냅샷 정보를 관리
_TPR_LIBRARYCACHE
V$LIBRARYCACHE 뷰의 스냅샷 정보를 관리
_TPR_SQLTEXT
V$SQLTEXT 뷰의 스냅샷 정보를 관리
_TPR_FILESTAT
V$FILESTAT 뷰의 스냅샷 정보를 관리
_TPR_SEGMENTSTAT
V$SEGMENT_STATISTICS 뷰의 스냅샷 정보를 관리
_TPR_TEMPSEG_OP_USAGE
V$TEMPSEG_OP_USAGE 뷰의 스냅샷 정보를 관리
_TPR_PROCESS
V$PROCESS 뷰의 스냅샷 정보를 관리
_TPR_SESSION
V$SESSION 뷰의 스냅샷 정보를 관리
_TPR_WAITER_SESSION
V$WAITER_SESSION 뷰의 스냅샷 정보를 관리
_TPR_UNDOSTAT
V$UNDOSTAT 뷰의 스냅샷 정보를 관리
_TPR_OSSTAT2
V$OSSTAT2 뷰의 스냅샷 정보를 관리
_TPR_SQLWA_HIST
V$SQLWA_HIST 뷰의 스냅샷 정보를 관리
_TPR_MODIFIED_PARAM
_VT_PARAMETER 테이블의 스냅샷 정보를 관리
_TPR_MISC
세션 수와 같은 기타 정보를 스냅샷으로 관리
다음은 저장된 스냅샷의 ID와 시간에 관한 정보를 관리하는 '_TPR_SNAPSHOT' 테이블 정보입니다.
세션 상태 저장 기능
세션 상태 저장 주기에 활동 중인 세션들의 정보를 저장합니다.
_TPR_ACTIVE_SES SION_HISTORY
활동 중인 세션 상태 정보를 관리
V$ACTIVE_SESSION_HISTO RY
최근 1시간 동안의 세션 상태 정보를 관리
다음은 최근 1시간 동안의 세션 상태 정보를 관리하는 'V$ACTIVE_SESSION_HISTORY' 테이블 정보 입니다.
수동 스냅샷 생성 기능
TPR을 설정하면 정해진 주기에 자동으로 스냅샷이 생성되지만 원하는 경우 현재 시점의 스냅샷을 남길 수 있습니다.
리포트 작성 기능
저장된 스냅샷과 세션 상태는 테이블과 뷰를 통해 직접 이용할 수도 있지만 보통은 이를 이용해 성능 분석 리포트를 만들게 됩니다. 현재 저장된 스냅샷 정보를 분석해 성능 분석 리포트를 만드는 기능은 구현되어 있습습니다. 그러나 저장된 세션 상태 정보를 분석해 성능 분석 리포트를 만드는 기능은 구현되어 있지 않습니다.
스냅샷을 이용한 성능 분석 리포트 작성
_TPR_SNAPSHOT 테이블을 조회하여 원하는 기간에 대한 시작, 종료 시각을 확인합니다.
다음은 원하는 기간의 시작과 종료 시점을 각각 begin_date, end_date라고 설정한 경우 tbsql에서 다음과 같이 입력하여 성능 분석 리포트를 작성하는 예입니다. _TPR_SNAPSHOT 테이블의 BEGIN_INTERVAL_TIME 이 begin_date과 end_date 사이에 포함되는 모든 스냅샷들이 리포트로 출력됩니다.
성능 분석 리포트는 다음의 경로에 파일로 생성됩니다.
성능 분석 항목
다음은 성능 분석 항목에 대한 설명입니다.
Overview Part
System Overview
CPU Usage
Memory Usage
Workload Overview
Workload Summary
Workload Stats
Instance Overview
Instance Efficiency
TAC Statistics Overview (Cluster Cache Activity, Cluster Buffer Cache, Cluster Cache and Wait Lock Statistics)
Top 5 Wait Events by Wait Time
I/O Overview
SQL Overview
PGA Work Area Statistics
Top 3 SQL Ordered by Elapsed Time
Top 3 SQL Ordered by Executions
Top 3 SQL Ordered by Gets
Detail Part
System Detail
OS Statistics
Shared Pool Statistics
Physical Plan Cache Statistics
Data Dictionary Cache Statistics
PGA Statistics
Workload Detail
Workload Stats (Time-based)
Workload Stats (Number-based)
Workload Stats (Size-based)
Instance Detail
Buffer Cache Statistics
Wait Event Summary (by Class)
Wait Events by Wait Time
Session Status with Wait Event
Blocking Session Status with Wait Event
Wlock Statistics
Spinlock(Latch) Statistics
Spinlock(Latch) Sleep Statistics
Tablespace I/O Statistics
File I/O Statistics
Temp Segment Usage Statistics
Segments Ordered by Physical Reads ("TPR_SEGMENT_STATISTICS=Y"로 설정할 경우)
Segments Ordered by Logical Reads ("TPR_SEGMENT_STATISTICS=Y"로 설정할 경우)
Segments Ordered by ITL Waits ("TPR_SEGMENT_STATISTICS=Y"로 설정할 경우)
Segments Ordered by Buffer Busy Waits ("TPR_SEGMENT_STATISTICS=Y"로 설정할 경우)
Segments Ordered by Row Lock Waits ("TPR_SEGMENT_STATISTICS=Y"로 설정할 경우)
Undo Statistics
Wait Statistics ("_DB_BLOCK_PIN_WAIT_USE_STAT=Y"로 설정할 경우)
SQL Detail
PGA Summary
PGA Work Area Histogram
SQL Ordered by Elapsed Time (with Physical Plan)
SQL Ordered by Elapsed Time/Execution (with Physical Plan)
SQL Ordered by Executions (with Physical Plan)
SQL Ordered by Gets (with Physical Plan)
SQL Ordered by Reads (with Physical Plan)
SQL Ordered by Extra I/O (with Physical Plan)
SQL Ordered by CPU (with Physical Plan)
Etc
Tibero Init. Parameters(.tip)
Modified Parameters
Last updated

