참고 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