참고 7. Shared Memory 크기 산정
본 부록에서는 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
Last updated