Shared Memory 크기 산정

티베로 DB Shared Memory 크기 산정 방법에 대해 설명합니다.

개요

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		                1258291200		1258291200
FIXED MEMORY		                1032962080		1032962080
SHARED POOL MEMORY		        225312768		222298112
SHARED POOL ALLOCATORS (LC)		25165824		24048688
SHARED POOL ALLOCATORS (DD)		16777216		3620240
SHARED POOL ALLOCATORS (SLAB)		79691776		76092320
SHARED POOL ALLOCATORS (MISC)		100663296		98956536
SHARED POOL ALLOCATORS (Total)		222298112		202717784
Database Buffers		        838860800		838860800
Redo Buffers		                10485760		10485760
10 rows selected.				

Shared Memory의 크기는 초기화 파라미터로 설정해서 조회할 수 있습니다.

Shared Memory 아래는TOTAL_SHM_SIZE 파라미터를 설정해서 조회하는 예입니다.

SQL> show param total_shm_size

NAME		                        TOTAL		        USED
-------------------------------------  --------------------    ---------------
TOTAL_SHM_SIZE                          INT64                   1258291200

Buffer Cach 아래는 DB_CACHE_SIZE 파라미터를 설정해서 조회하는 예입니다.

SQL> show param db_cache_size

NAME		                        TOTAL		        USED
-------------------------------------  --------------------    ---------------
DB_CACHE_SIZE                           UINT64                  838860800

싱글 모드 : TOTAL_SHM_SIZE의 2/3 TAC 모드 : TOTAL_SHM_SIZE의 1/2

Log Buffer 아래는 LOG_BUFFER 파라미터를 설정해서 조회하는 예입니다. (LOG_BUFFER 파라미터의 기본값 :10MB)

SQL> show param log_buffer

NAME		                        TOTAL		        USED
-------------------------------------  --------------------    ---------------
FLASHBACK_LOG_BUFFER		        UINT32		        0
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