Multiple 데이터 캐시

  • 데이터 캐시 관련 파라미터
파라미터정의비고
db_cache_size{panel:borderStyle=nonebgColor=#FFFFFF}기본 캐시, 블록 크기는 CREATE DATABASE 인자에 따름 (보통 8KB, SYSTEM/SYSAUX/TEMP 사용){panel}
db_keep_cache_size{panel:borderStyle=nonebgColor=#FFFFFF}(buffer_pool keep) storage 절을 사용한 오브젝트 용도{panel}KEEP pool 테스트 사례
db_recycle_cache_size{panel:borderStyle=nonebgColor=#FFFFFF}(buffer_pool recycle) storage 절을 사용한 오브젝트 용도
# 재사용 빈도가 매우 적은 경우 (LOB 캐싱)
# keep buffer_pool 소속 CR 블록은 recycle buffer_pool 에 생성 됨
# 1 회성 대량 랜덤 액세스 케이스에 유용 (default buffer_pool 보호){panel}
db_Nk_cache_size{panel:borderStyle=nonebgColor=#FFFFFF} * N : 2 / 4 / 8 / 16 / 32
* 기본 블록 크기와 다른 Nk 크기의 테이블스페이스 생성 허용
* 서로 다른 블록 크기의 데이터베이스 간 Tablespace Transport 목적
* 일반적으로 다양한 블록 크기는 사용하지 않음 (일부 IOT, LOB 같은 경우){panel}

8KB 블록 크기는 대부분 시스템에서 사용되고 있음으로 인해 이상 현상이 가장 적음

  • 오라클 초기 버전은 db_cache_size 대신 db_block_buffers 파라미터 사용 (데이터캐시 = 버퍼풀)
  • 처음 keep / recycle 캐시 소개시 buffer_pool_keep / buffer_pool_recycle 파라미터 제공 (지금도 32bit 환경에서 4GB 이상 메모리 사용시 활용)

그래뉼과 버퍼 풀

keep 캐시 그래뉼 정보


SQL> select ge.grantype,
       ct.component,
       ge.granprev,       -- 이전 그래뉼 번호 (0인 경우 처음 그래뉼)
       ge.grannum,        -- 그래뉼 번호
       ge.grannext        -- 다음 그래뉼 번호 (0인 경우 마지막 그래뉼)
  from x$ksmge ge,
       x$kmgsct ct
 where ge.grantype != 6
   and ge.grantype = ct.grantype
   and 'KEEP buffer cache'
 order by ge.grantype, ct.component;

  GRANTYPE COMPONENT                                                          GRANPREV    GRANNUM   GRANNEXT
---------- ---------------------------------------------------------------- ---------- ---------- ----------
         8 KEEP buffer cache                                                        26         27          0
         8 KEEP buffer cache                                                        25         26         27
         8 KEEP buffer cache                                                        24         25         26
         8 KEEP buffer cache                                                        23         24         25
         8 KEEP buffer cache                                                        22         23         24
         8 KEEP buffer cache                                                        17         22         23
         8 KEEP buffer cache                                                        16         17         22
         8 KEEP buffer cache                                                        12         16         17
         8 KEEP buffer cache                                                         0         15         14
         8 KEEP buffer cache                                                        15         14         13
         8 KEEP buffer cache                                                        14         13         12
         8 KEEP buffer cache                                                        13         12         16

  • granum 에 갭이 있는 것은, AMM 에 의한 메모리 RESIZE 로 인해, KEEP buffer cache 를 구성하는 그래뉼이 추가/제거 됨으로 인함
  • 그래뉼 추가/제거 확인 : v$sga_resize_ops (10g) , v$memory_resize_ops (11g)

링크드 리스트를 이용하는 그래뉼

!Multiple 데이터 캐시.그래뉼.PNG|vspace=4!

버퍼 풀

  • 메모리 컴포넌트 간의 그래뉼 이동 메커니즘을 설명 하기 위해 LRU(least recently used) 리스트를 인용 하나, working data set 이 더 적절 함
  • 각각의 버퍼 풀은 몇 개의 working data set 으로 나뉘며, working data set 은 그래뉼을 가로 질러 구성 됨
  • 예를 들어 버퍼 풀이 네 개의 working data set 으로 구성 되어 있다면, 하나의 working data set 은 버퍼 풀을 구성하는 각 그래뉼의 ¼ 을 소유
  • 안 쓰는 버퍼 풀 포함, 모든 버퍼 풀은 동일한 개수의 working data set 으로 구성, 버퍼 풀이 8개가 된 이후 working data set 개수는 항상 8의 배수
  • x$kcbwds(dbwr_num), v$buffer_pool_statistics
  • working data set : dbwr = N : 1

working data set

!Multiple 데이터 캐시.working data set.PNG|vspace=4!

참조 문서

이 자료는 (오라클 코어)를 참고 하여 작성했습니다.