본 장에서는 Tibero의 SQL Execution Work Area 크기 산정방법에 대해 설명한다.
Tibero Shared Memory는 부팅할 때 고정된 용도로 사용되는 Fixed 영역과 운영 중에 자동으로 할당되어 사용되는 Shard Pool 영역으로 나뉜다.
Fixed Memory
DB가 부팅할 때 파라미터 값을 바탕으로 크기가 고정되는 영역이다.
Buffer Cache(Database Buffer)
Log Buffer
그 외 항목 : 전역 변수를 위한 공간, 워킹 스레드 정보와 세션 정보를 관리하는 영역
Shared Pool Memory
운영 중에 동적으로 할당되어 사용되는 영역이다.
DD Cache
PP Cache(Library Cache)
그 외 항목
다음은 Shared Memory 크기를 산정할 때 고려해야 할 사항이다.
Shared Memory 크기를 운영 중에 동적으로 늘릴 수 없다.
Buffer Cache와 Shared Pool 사용 패턴을 분석하여 전체 Shared Memory 크기를 알맞게 정해야 한다.
Buffer Cache
주요 Workload를 돌려본 후 APM 리포트의 Buffer Cache Hit율을 보고 판단한다.
Hit율이 90 % 이하 : Buffer Cache 크기 늘려야 한다.
Shared Pool Memory
Workload를 돌려본 후 v$sga의 ‘SHARED POOL MEMORY’ 항목의 사용률 보고 판단한다.
Shared Pool 사용률이 너무 높으면(Free 영역이 적은 경우) Shared Pool 크기를 늘려야 한다.
세션당 최소 1M 이상의 Shared Pool 영역 확보가 필요하다.
Shared Memory 각 영역의 크기는 v$sga에서 확인할 수 있다.
SQL> select * from v$sga; NAME TOTAL USED ---------------------------------------- ---------- ---------- SHARED MEMORY 536870912 536870912 FIXED MEMORY 430875880 430875880 SHARED POOL MEMORY 105992872 40974968 SHARED POOL ALOCATORS 1 1 Database Buffers 357892096 357892096 Redo Buffers 10485760 10485760
Shared Memory의 크기는 초기화 파라미터로 설정해서 조회할 수 있다.
Shared Memory
다음은 TOTAL_SHM_SIZE 파라미터를 설정해서 조회하는 예이다.
SQL> show param total_shm_size NAME TYPE VALUE ---------------------------- -------- ------------------------ TOTAL_SHM_SIZE INT64 536870912
Buffer Cache
다음은 DB_CACHE_SIZE 파라미터를 설정해서 조회하는 예이다.
SQL> show param db_cache_size NAME TYPE VALUE ---------------------------- -------- ------------------------- DB_CACHE_SIZE UINT64 357892096
싱글 모드 : TOTAL_SHM_SIZE의 2/3
TAC 모드 : TOTAL_SHM_SIZE의 1/2
Log Buffer
다음은 LOG_BUFFER 파라미터를 설정해서 조회하는 예이다. (LOG_BUFFER 파라미터의 기본값 : 10MB)
SQL> show param log_buffer NAME TYPE VALUE ---------------------------- -------- -------------------------- LOG_BUFFER UINT32 10485760
Shared Pool Memory
전체 Shared Memory 크기에서 Fixed 영역을 뺀 나머지 영역이다.
TOTAL_SHM_SIZE - [Fixed Memory]
싱글 모드
전체 Shared Pool 크기가 _MIN_SHARED_POOL_SIZE보다 커야 한다.
_MIN_SHARED_POOL_SIZE 기본값: 1M * MAX_SESSION_COUNT
TAC 모드
TAC를 위한 CCC와 CWS 공간이 충분히 확보되어야 한다. CCC와 CWS를 위해 전체 Buffer Cache 크기의 25% 가량을 Shared Pool에서 사용한다.
CCC와 CWS를 위한 공간을 제외한 Shared Pool 영역이 _MIN_SHARED_POOL_SIZE보다 커야 한다.
[전체 Shared Pool 크기] = _MIN_SHARED_POOL_SIZE + [CCC 공간] + [CWS 공간] + [Free Shared Pool 크기]
PP Cache와 DD Cache 등을 위한 Free Shared Pool 크기는 CCC와 CWS 공간보다 커야 한다.
[Free Shared Pool 크기] > ([전체 Shared Pool 크기] - _MIN_SHARED_POOL_SIZE) / 2