5. 캐시와 복사
데이터 블록을 메모리에 적재하고, 검색하고, 변경된 다수의 복제본 처리방법
키워드 : 그래뉼, 버퍼 풀, 버퍼 캐시, working data set
인스턴스 그래뉼 크기 확인
SQL> select * from v$sgainfo where name = 'Granule Size';
NAME BYTES RES
-------------------------------- ---------- ---
Granule Size 16777216 No
컴포넌트 별 그래뉼 정보
SQL> select component, current_size, granule_size, round(current_size/granule_size) from v$sga_dynamic_components;
COMPONENT CURRENT_SIZE GRANULE_SIZE ROUND(CURRENT_SIZE/GRANULE_SIZE)
---------------------------------------------------------------- ------------ ------------ --------------------------------
shared pool 838860800 16777216 50
large pool 100663296 16777216 6
java pool 100663296 16777216 6
streams pool 83886080 16777216 5
DEFAULT buffer cache 4647288832 16777216 277
KEEP buffer cache 0 16777216 0
RECYCLE buffer cache 0 16777216 0
DEFAULT 2K buffer cache 0 16777216 0
DEFAULT 4K buffer cache 0 16777216 0
DEFAULT 8K buffer cache 0 16777216 0
DEFAULT 16K buffer cache 0 16777216 0
DEFAULT 32K buffer cache 0 16777216 0
Shared IO Pool 536870912 16777216 32
ASM Buffer Cache 0 16777216 0
모든 그래뉼 목록
SQL> select ge.grantype, ct.component,
ge.granprev, ge.grannum, ge.grannext
from x$ksmge ge,
x$kmgsct ct
where ge.grantype != 6
and ct.grantype = ge.grantype
order by ge.grantype, ct.component;14:31:59 2 14:31:59 3 14:31:59 4 14:31:59 5 14:31:59 6 14:31:59 7
GRANTYPE COMPONENT GRANPREV GRANNUM GRANNEXT
---------- ---------------------------------------------------------------- ---------- ---------- ----------
1 shared pool 174 508 507
1 shared pool 508 507 506
1 shared pool 507 506 505
...
1 shared pool 177 176 175
1 shared pool 176 175 174
1 shared pool 175 174 508
2 large pool 0 464 463
...
2 large pool 460 459 0
3 java pool 0 458 457
...
3 java pool 454 453 0
4 streams pool 136 137 0
...
4 streams pool 0 133 134
7 DEFAULT buffer cache 451 452 437
...
7 DEFAULT buffer cache 151 142 447
15 Shared IO Pool 0 173 170
...
15 Shared IO Pool 139 138 140
376 rows selected.
버전 | 기능 | 파라미터 | 비고 |
---|---|---|---|
9i | 수동 | - | |
10g | ASMM(Automatic Shared Memory Management) | sga_target | |
11g | AMM(Automatic Memory Management) | memory_target | SGA, PGA(pga_aggregate_target) 관리 |
데이터 캐시 관련 그래뉼 용도
1. 버퍼 배열용 (대세)
2. 버퍼 헤더 배열용 (x$bh)
3. 관리용
그래뉼
버전 별 버퍼수 차이
-- 32bit 9.2.0.8 (x$bh 레코드 길이 186 bytes)
SQL> select current_size, granule_size, round(current_size/granule_size) from v$sga_dynamic_components where component = 'DEFAULT buffer cache';
CURRENT_SIZE GRANULE_SIZE ROUND(CURRENT_SIZE/GRANULE_SIZE)
------------ ------------ --------------------------------
50331648 8388608 6
SQL> select block_size, buffers from v$buffer_pool;
BLOCK_SIZE BUFFERS
---------- -------
8192 6006 <-- 그래뉼 한개당 1001개 버퍼 ( 그래뉼[8388608] = 버퍼[8192*1001] + 버퍼헤더[186*1001] + 그래뉼헤더[2230]
-- 32bit 11.1.0.7 (x$bh 레코드 길이 208 bytes)
SQL> select current_size, granule_size, round(current_size/granule_size) from v$sga_dynamic_components where component = 'DEFAULT buffer cache';
CURRENT_SIZE GRANULE_SIZE ROUND(CURRENT_SIZE/GRANULE_SIZE)
------------ ------------ --------------------------------
50331648 8388608 6
SQL> select block_size, buffers from v$buffer_pool;
BLOCK_SIZE BUFFERS
---------- -------
8192 5982 <-- 그래뉼 한개당 997개 버퍼 ( 그래뉼[8388608] = 버퍼[8192*997] + 버퍼헤더[208*997] + 그래뉼헤더[13808]
이 자료는 (오라클 코어)를 참고 하여 작성했습니다.