ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 实例优化——Db_buffer_Cache

实例优化——Db_buffer_Cache

原创 Linux操作系统 作者:oracleclub 时间:2011-12-11 19:30:00 0 删除 编辑
调整DB_Cache大小,设置合适的db_cache大小可以提高缓冲区的命中率,提供用户数据的响应时间。
计算命中率前,要知道几个缓冲值

SQL> select name,value
  2  from v$sysstat
  3  where name in ('db block gets from cache',
  4  'consistent gets from cache',
  5  'physical reads cache');

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
db block gets from cache                                               2354
consistent gets from cache                                            82225
physical reads cache                                                   6007

db block gets:DB块获——db_cache中存在被更改后最新版本的数据(数据在其他用户访问前已经提交了)
consistent gets:一致获取——db_cache中存在的脏数据,这样的数据不会被访问,此时用户使用回滚段中的记录
physical reads:物理读——db_cache中没有用户要访问的数据,需要从磁盘中读取该数据块

逻辑读 = db block gets from cache  +  consistent gets from cache
物理读 = physical reads cache  
命中律=1-物理读/逻辑读

注意:命中律并不能说明此时的数据库性能就一定很好,还需要具体分析等待事件。如果此时的
命中率很高,但是系统存在大量的等待事件,如果数据文件离散度等,可能存在大量的全表扫描,就要进一步分析
等待事件和相关的SQL语句。
可以在业务高峰期阶段查询命中率,反复调试,知道命中率满足要求
alter system set db_cache=100M;

如果用户访问多个大表,这些表 只有一部分保存在lib_cache中,lib_cache中的大表数据的存在会降低
DB_Cache的命中率,而如果这样的大表不是用户频繁访问的对象,就可以放进recycle_pool来存放,这样
的数据库对象会被覆盖。

对于既没有存放在keep_pool,recycle_pool中的对象,默认放在defautl_pool
缓存的表的尺寸不要超过缓冲区的10%。



db_buffer_cache
1,default pool
2,keep pool
3,recycle pool:对于随机访问的大段可以放在这个缓冲区池,因为大的数据段会很快
老化被踢出去,导致缓冲区的频繁刷新输出,所以需要将随机访问的大段放置这个缓冲池中;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26465805/viewspace-713122/,如需转载,请注明出处,否则将追究法律责任。

下一篇: IZ0_042_pdf
请登录后发表评论 登录
全部评论

注册时间:2011-11-22

  • 博文量
    61
  • 访问量
    82186