分享

实例优化

 浸心阁 2015-07-16
调整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:对于随机访问的大段可以放在这个缓冲区池,因为大的数据段会很快
老化被踢出去,导致缓冲区的频繁刷新输出,所以需要将随机访问的大段放置这个缓冲池中;


   
   
   
             

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多