日期:2014-05-16 浏览次数:20398 次
Buffer Cache可以有三个池
默认缓冲区池
keep缓冲区池
recycling缓冲区池
--保留池和回收池可以独立于sga中的其他缓存分配内存。创建表的时候可以在storage子句中使用buffer_pool_keep和buffer_pool_recyle子句来指定表的数据块将要驻留的池?。
keep缓冲区池
当数据读取到kepp缓冲区池后,会一直保留在内存中,不会被刷出内存,比如整天使用频繁的表,有利的做法是讲其放在keep缓冲池中,以减少IO数量。
keep池的大小由db_keep_cache_size决定,默认值为0
示例:
Setp1 设置db_keep_cache_size大小
SQL> alter system set db_keep_cache_size=32M scope=both;
System altered.
SQL> show parameter keep
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
buffer_pool_keep string
control_file_record_keep_time integer 7
db_keep_cache_size big integer 32M
/*--注buffer_pool_keep,8i参数,意义和db_keep_cache_size一样
增大db_keep_cache_size会相应减小db_cache_size,可以通过下面方式查看db_cache_size
SQL> select * from v$sgainfo;
Fixed SGA Size 2217992 No
Redo Buffers 2396160 No
Buffer Cache Size 255852544 Yes
Shared Pool Size 230686720 Yes
Large Pool Size 4194304 Yes
Java Pool Size 4194304 Yes
Streams Pool Size 0 Yes
Shared IO Pool Size