- 複数バッファプールの概要
- オブジェクトごとにデータブロックが読み込まれるキャッシュを使い分ける
- アプリケーションのアクセス特性が分散している場合に検討
- LRUリストもそれぞれに用意される
- メモリ側の設定とセグメント側の設定が必要
プール名 |
目的 |
パラメータ |
DEFAULT |
必須のバッファ |
DB_CACHE_SIZE |
KEEP |
頻繁に再利用されるオブジェクトをメモリ上に保持しておき、I/Oを減らすために使用。DEFAULTバッファプールサイズの10%未満のサイズのセグメントが目安。格納するすべてのデータブロック数の合計を確保する。 |
DB_KEEP_CACHE_SIZE |
RECYCLE |
ほとんど再利用されないオブジェクトをメモリ上に残さないようにして効率的にメモリを使用するために使用。DEFAULTバッファプールの2倍以上のサイズを持つセグメントが目安。トランザクションが完了するまでにアクセスするデータブロック数のサイズを確保する。 |
DB_RECYCLE_CACHE_SIZE |
SQL> alter system set db_keep_cache_size=16M scope=both ;
システムが変更されました。
SQL> show parameter cache_size
NAME TYPE VALUE
---------------------- ------------ ----------
db_16k_cache_size big integer 0
db_2k_cache_size big integer 0
db_32k_cache_size big integer 0
db_4k_cache_size big integer 0
db_8k_cache_size big integer 0
db_cache_size big integer 268435456
db_keep_cache_size big integer 16777216
db_recycle_cache_size big integer 0
SQL> select SEGMENT_NAME,SEGMENT_TYPE,BUFFER_POOL
from dba_segments where segment_name like 'TAX' ;
SEGMENT_NAME SEGMENT_TYPE BUFFER_POOL
------------ ------------ ------------
TAX TABLE DEFAULT
TAX INDEX DEFAULT
SQL> alter table USER1.TAX storage(buffer_pool keep) ;
表が変更されました。
SQL> select SEGMENT_NAME,SEGMENT_TYPE,BUFFER_POOL
from dba_segments where segment_name like 'TAX' ;
SEGMENT_NAME SEGMENT_TYPE BUFFER_POOL
------------ ------------ ------------
TAX TABLE KEEP
TAX INDEX DEFAULT
- 複数バッファプールのヒット率
- v$sysstatから算出すると、全部のバッファプールの合計になってしまう
- V$BUFFER_POOL_STATISTICSビューを使用