`
wahaha000
  • 浏览: 683 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

浅谈Oracle Buffer Cache的优化思路

阅读更多
Buffer Cache

The database buffer cache is the portion of the SGA that holds copies of data blocks read from datafiles. All user processes concurrently connected to the instance share access to the database buffer cache是sga的一部分,用于保持从数据文件读取数据块的副本。所有用户进程共同访问database buffer cache。

数据库的读写操作应尽量在内存中完成,减少IO次数是数据库性能优化的基本策略。

优化buffer cache的思路:

1)根据经验设置db_cache_size参数,例如,db_cache_size=SGA_TARGET*80%。

2)分析AWR报告中的Buffer Hit值(Instance Efficiency Percentages (Target 100%) )。



需要关注的等待事件(如果这些等待事件出现在Top-5中,则说明Buffer Cache工作效率不高):

Latch:cache buffer chains 

Latch:cache buffer LRU chains 

Buffer busy waits 

Read waits 

Free buffer waits 

Latch:cache buffer chains与Latch:cache buffer LRU chains
表示数据库中存在一些数据块被频繁读取,即所谓的热块数据。如,频繁读取的代码表(?),UNDO头数据(?)、单调增长的索引等。

以下可以查询热块数据:

select * from (select owner,object_name,object_type,statistic_name,sum(value) 

from v$segment_statistics 

group by owner,object_name,object_type,statistic_name 

order by sum(value) desc) 

where rownum<10;
优化方法:如,减少代码数据的读取次数,使用reverse key索引,以及10g的Global Hash-patition分区索引等。

Buffer busy waits

表示多个应用在并发访问某个Buffer Cache数据块时出现等待事件。这种数据块可能是应用表或索引,也可能是UNDO(?)、Segment Header(?)等系统数据。

以下可以查询等待事件涉及的对象:

select object_name,statistic_name,value  

from v$segment_statistics  

where statistic_name ='buffer busy waits' and value > 2000;
优化方法:如,分析是否有全表扫描,索引是否太多,索引单调增长等,归根到底还是分析应用。

Read waits

包括:db file sequential read、db file parallel read、db file scattered read。一般而言,只要db file scattered read不是最主要的等待事件,或者所占比例不高,上述事件即使出现在Top-5等待事件中也是正常现象。

如果这些等待事件非常高,或者所占比例很高。优化方法:1,同样地,首先优化应用,如是否有太多的全表扫描,索引碎片是否严重。2.适当扩大db_cache_size。3.分析磁盘I/O效率。

Free buffer waits

表示将Buffer Cache 内容写到磁盘的速度,赶不上其它应用申请空闲Buffer Cache的要求。优化方法:同样地,首先优化应用,如是否有太多的全表扫描,索引效率是否比较高。2.适当扩大db_cache_size。3.扩大db_writer_processes参数,增加DBWn进程数量,加快将Buffer Cache内容写到磁盘的速度。

db_writer_processes默认为1或cpu_count/8,默认值通常就可以,如果需要设置db_writer_processes,请不要超过cpu_count,以避免cpu资源无谓消耗。

其它优化方法,将表设计成cache表,等等。
  • 大小: 29.9 KB
分享到:
评论

相关推荐

    Oracle+RAC原理浅谈.ppt

    Oracle RAC 原理浅谈 Oracle RAC(Real Application Clusters)是一种高可用性、高性能、可扩展的集群解决方案,旨在提供高效、可靠的数据库服务。以下是 Oracle RAC 的一些关键知识点: RAC 部署技巧及维护注意...

    Oracle-RAC原理浅谈.ppt

    在Oracle RAC的基本架构中,每个实例都有自己的内存结构,包括数据缓冲区缓存(Buffer Cache)、共享池(Shared Pool)、数据字典缓存(Data Dictionary Cache)等关键组件。这些实例通过高速互联网络(High Speed ...

    Oracle_RAC原理浅谈

    在Oracle RAC中,每个实例都有自己的内存结构,包括SGA(System Global Area),其中包含了如Redo Log Buffer、Shared Pool、Data Dictionary Cache、Library Cache等关键组件。DBWR(Database Writer)和SMON...

    浅谈oracle SCN机制

    当一个事务开始,其修改的数据首先在Buffer Cache中进行,然后标记为"脏数据"并存储在Log Buffer中。事务提交时,LGWR进程将这些"脏数据"写入Redo Log File。在CheckPoint发生时,CKPT进程更新数据文件头部信息,...

    ORACLE 10g数据库技术查询性能浅谈.pdf

    在分析阶段,服务器首先会在高速缓存(Buffer Cache)中搜索相同的SQL语句及其执行计划。如果找到匹配的语句,那么可以直接使用已有的执行计划,避免重新从硬盘读取数据,从而提高查询速度。这是Oracle数据库性能...

    Web应用系统的缓存技术浅谈

    【缓存技术浅谈】 缓存技术是一种优化性能的关键手段,尤其在Web应用系统中扮演着重要角色。本文将探讨缓存的基本概念、其在Web应用系统中的作用以及各种类型的缓存技术。 缓存,也称作Cache,是高速缓冲存储器,...

    缓存技术浅谈PPT简介

    某些特定应用,如Oracle的raw device和MySQL的InnoDB,可能需要自定义缓存策略以优化性能。 数据库缓存是数据库性能优化的核心。以MySQL为例,它有两种主要的缓存策略:Query Cache和Data Buffer。Query Cache存储...

    非常棒的缓存技术教程

    对于某些特殊应用,如Oracle的裸设备和MySQL的InnoDB,可能会选择跳过操作系统自带的Disk Cache,自行实现更高效的缓存策略。 数据库缓存是数据库性能优化的关键。由于数据库处理大量数据且查询频繁,缓存可以显著...

Global site tag (gtag.js) - Google Analytics