개요
Tibero 내부 메모리 사용량을 확인하는 방법에 대해 안내합니다.
방법
TSM(Tibero Shared Memory) 사용량 통계 조회
v$sga 뷰를 통해 TSM(공유 메모리)의 영역별 전체 크기 및 사용량을 확인할 수 있습니다.
SQL> select * from v$sga;
NAME TOTAL USED
---------------------------------------- ---------- ----------
SHARED MEMORY 2147483648 2147483648
FIXED MEMORY 1757257680 1757257680
SHARED POOL MEMORY 390201344 222298112
SHARED POOL ALLOCATORS (LC) 46137344 43286616
SHARED POOL ALLOCATORS (DD) 33554432 19895864
SHARED POOL ALLOCATORS (SLAB) 75497472 74745168
SHARED POOL ALLOCATORS (MISC) 33554432 8494256
SHARED POOL ALLOCATORS (LONG-TERM) 33554432 29262360
SHARED POOL ALLOCATORS (Total) 222298112 175684264
Database Buffers 1431699456 1431699456
Redo Buffers 104857600 104857600
SQL
복사
스냅샷 기준 SGA 사용량 조회(_TPR_SGASTAT 테이블 사용)
v$sga는 최대값 정보를 제공하지 않기 때문에, TPR 리포트를 기준으로 확인할 때는 아래처럼 조회합니다.
SQL> select SNAP_ID , sum("SIZE")/1024/1024/1024 gb from _TPR_SGASTAT
group by SNAP_ID
order by 2 desc
fetch first 1 rows only;
SNAP_ID GB
---------- ----------
2494 .33839564
SQL
복사
PGA 사용량 통계 조회
v$pgastat 뷰를 통해 PGA(Process Global Area)의 메모리 사용 현황을 확인할 수 있습니다.
SQL> select * from v$pgastat;
NAME VALUE
---------------------------------------------------------------- ----------
Ex memory soft limit 1785328181
Ex memory operation limit 107374182
Total ex memory allocated 7701312
Total ex memory allocated (max) 18218688
FIXED pga memory 122540215
ALLOCATED pga memory 135352320
USED pga memory (from ALLOCATED) 40480392
Total workarea memory used 5.6632E+10
Total workarea temporary segment used 0
SQL
복사
항목 | 설명 |
Ex memory soft limit | FIXED pga memory 제외하고 SQL 작업에 사용할 수 있는 전체 메모리 한계값 |
Ex memory operation limit | SQL Work Area에서 하나의 작업(정렬, 조인 등)에 사용할 수 있는 메모리의 한계값. 부족할 경우 임시 세그먼트 사용 |
Total ex memory allocated | 현재 모든 Worker Thread 에 할당된 SQL Work Area 총 합 |
Total ex memory allocated (max) | DB 기동 이후 가장 높았던 PGA 메모리 사용량. |
FIXED pga memory | Tibero 기동시 PGA 에 고정적으로 할당된 영역의 크기. |
ALLOCATED pga memory | Tibero 기동 이후 PGA 에 가변적으로 할당된 영역의 크기. |
USED pga memory (from ALLOCATED) | 현재 사용 중 인 PGA 메모리 총 합. |
Total workarea memory used | DB 기동 이후 SQL 작업에 사용된 누적 Work Area 메모리 총 합. |
Total workarea temporary segment used | DB 기동 이후 임시 세그먼트에 사용된 메모리 총 합. |
세션별 PGA 사용량 조회
# Worker process
SQL> select SID, TYPE, PGA_USED_MEM from v$session ORDER BY PGA_USED_MEM DESC;
SID TYPE PGA_USED_MEM
---------- --------------- ---------------------------
92 WTHR 2209008
90 WTHR 1726272
91 WTHR 1726272
96 WTHR 750960
95 WTHR 750936
89 WTHR 734456
93 WTHR 143152
94 WTHR 142992
# Background process
SQL> select SID, TYPE, PGA_USED_MEM from v$bg_session ORDER BY PGA_USED_MEM DESC;
SID TYPE PGA_USED_MEM
---------- --------------- -------------------------
11 DBWR_CTHR 10001192
12 RECO_CTHR 4280304
4 CTHR 1881664
5 CTHR 1881664
6 CTHR 1881664
7 CTHR 1881664
8 CTHR 1881664
9 CTHR 1881664
2 CTHR 1242496
3 CTHR 1229016
1 CTHR 1217968
10 AGNT_CTHR 1201224
21 AGNT_WTHR 739320
17 AGNT_WTHR 736432
0 MTHR 150536
14 AGNT_WTHR 134288
22 AGNT_WTHR 93136
20 AGNT_WTHR 93136
19 AGNT_WTHR 93136
15 AGNT_WTHR 93136
13 AGNT_WTHR 93136
70 RECO_WTHR 0
71 RECO_WTHR 0
69 RECO_WTHR 0
68 RECO_WTHR 0
67 RECO_WTHR 0
66 RECO_WTHR 0
65 RECO_WTHR 0
64 RECO_WTHR 0
63 RECO_WTHR 0
62 RECO_WTHR 0
61 RECO_WTHR 0
60 RECO_WTHR 0
SQL
복사
참고
TSM(TIBERO SHARED MEMORY)
TSM 은 Tibero의 공유 메모리 영역으로, 인스턴스 내에서 여러 프로세스가 데이터를 동시에 공유할 수 있도록 구성된 메모리 공간입니다.
TSM은 부팅할 때 고정으로 할당되는 Fixed Memory 영역과 운영 중 동적으로 할당되어 사용하는 Shared Pool Memory 영역으로 구분됩니다.
Fixed Memory
•
Database Buffer : 테이블과 인덱스의 데이터를 가지는 메모리 영역
•
Redo Log Buffer : 변경 내용을 로그로 저장하기 위한 메모리 영역
•
System Area : 전역 변수 공간, 세션/스레드 제어 구조 등 내부 제어 정보
Shared Pool Memory
•
Data Dictionary Cache (DD Cache) : 최근에 수행한 SQL 이 사용하는 오브젝트(테이블, 컬럼, 사용자, 권한)의 Data Dictionary 정보
•
Physical Plan Cache (PP Cache) : 최근에 사용한 SQL 의 명령문과 구문 분석(파싱) 정보, 실행계획 정보
PGA(PROCESS GLOBAL AREA)
PGA 는 Worker 프로세스마다 개별적으로 할당되는 독립적인 메모리이며, 네 가지 영역으로 구성됩니다.
•
Process Memory : 워커 프로세스 자체가 사용하는 고정 메모리
•
SQL Info Area : 현재 실행 중인 SQL 문 관련 정보
•
Session Info Area : 로그온 및 세션 관련 정보
•
SQL Work Area : Worker Thread 가 SQL 수행 시 정렬, 해시 조인, 머지 조인 등에서 작업공간으로 동적으로 확장되는 공간
※ SQL을 수행하는 모든 Worker Thread 에 할당할 수 있는 PGA 총합은 대략 (MEMORY_TARGET - TOTAL_SHM_SIZE) 입니다.