`

buffer busy waits 等待事件(热点块竞争)

 
阅读更多

 

 ************************************************************************************************************************************************

buffer busy waits等待事件的原因:hot block

************************************************************************************************************************************************
在SGA中读取或修改缓冲区的会话必须首先获取cache buffers chains锁存器,并且遍历这个缓冲区链,直到他发现必需的缓冲区头。然后,他必须以共享模式或独占模式获取
一个缓冲区锁或缓冲区头上的pin,这取决于他计划的操作。一旦缓冲区头被钉住,会话就释放cache buffers chains锁存器,并在缓冲区自身上执行计划的操作。如果无法获
取一个pin,会话就在buffer busy waits等待事件上等待。这种等待时间不会应用于在会话的私有PGA中执行的读取或写入操作。

块可能被其它的session读到缓冲区,所以session必须等待块的读入结束。
session可能有与等待的session查询不协调的缓冲块。

出现了hot block,所谓hot block指的是同时有若干个session,同时对一个block进行操作,导致此block比较忙;


导致block比较忙的原因是:oracle数据库的数据存放的最小单位就是block,数据每次读取数据的时候只能以block为单位;
如果有多条记录存放在一个block上的话,那么导致多个session访问同一个block的可能性就越大;


解决hot block的方法有:
1、出现此情况通常可能通过几种方式调整:增大data  buffer;
2、增加freelist,减小pctused;怎样的目的是将一个block上可以使用的空间减少,这样的话:一个block上的数据存放的较少,可以提高应用的访问并发率,减少hot block的产生;
3、增加回滚段数目,增大initrans,考虑使用LMT, 确认是不是由于热点块造成(如果是可以用反转索引,或者用更小块大小);
3、可以建立block较小的表空间,见热点对象移动到此表空间上去;
4、优化应用,优化索引,提高索引的命中率;

◎ Oracle会话正在等待钉住一个缓冲区。必须在读取或修改缓冲区前将它钉住。在任何时刻只有一个进程可以钉住一个缓冲区。
◎ buffer busy waits表明读/读、读/写、写/写争用。
◎ 采取的适当措施取决于P3参数中的原因码。
    
A、如果等待处于字段头部,应增加自由列表(freelist)的组数,或者增加pctused到pctfree之间的距离。
B、如果等待处于回退段(undo)头部块,可以通过增加回滚段(rollback segment)来解决缓冲区的问题;
C、如果等待处于回退段(undo)非头部块上,就需要降低驱动一致读取的表中的数据密度,或者增大DB_CACHE_SIZE;
D、如果等待处于数据块,可以将数据移到另一数据块以避开这个"热"数据块、增加表中的自由列表或使用LMT表空间;
E、如果等待处于索引块,应该重建索引、分割索引或使用反向键索引。


 

 http://blog.chinaunix.net/u/24260/showart_456274.html

************************************************************************************************************************************************

 

 

分享到:
评论

相关推荐

    非空闲等待事件.chm

    buffer busy waits (Concurrency类) 事件参数说明: 事件号 事件名 参数一 参数二 参数三 145 buffer busy waits file# block# 9i - 原因码 10g - block class# ORACLE会话正在等待PIN住一个缓冲区...

    Oracle缓冲区忙等待的识别和解决

    这种等待事件通常表明多个会话在尝试访问同一个数据块,导致了资源竞争,进而影响了数据库的整体效率。识别和解决缓冲区忙等待是优化Oracle数据库性能的关键步骤。 首先,识别缓冲区忙等待可以通过分析Oracle的性能...

    Oracle等待事件说明一

    "Oracle等待事件说明一"主要关注了几个关键的等待事件,包括"buffer busy waits"、"db file parallel write"、"db file single write"、"db file scattered read"、"db file sequential read"以及"direct path write...

    Oracle数据库教程——oracle常见的等待事件说明[参照].pdf

    Buffer Busy Waits通常与热点块(Hot Blocks)相关,即多个用户频繁访问相同的数据块。如果等待时间过长,它会在自动工作负载 repository (AWR) 或 statspack 报告中显示。可以通过`v$event_name`视图查询该等待事件...

    ORACLE常见等待事件说明

    常见的非空闲等待事件包括 db file scattered read、db file sequential read、buffer busy waits、free buffer waits、enqueue、latch free、log file parallel write、log file sync 等。 1. db file scattered ...

    Oracle常见等待事件说明

    一些常见的非空闲等待事件有 db file scattered read、db file sequential read、buffer busy waits、free buffer waits、enqueue、latch free、log file parallel write、log file sync 等。 db file scattered ...

    阿里巴巴大并发插入优化案例

    1. **调整索引设计**:考虑到索引可能导致严重的“Buffer Busy Waits”竞争,通过将索引设计为全局、HASH分区的方式,成功减少了索引相关的等待竞争。 2. **优化L1块管理**:通过深入分析L1块的管理机制,识别出...

    【故障处理】队列等待之TX 等待事件处理.docx

    对于其他常见的等待事件,如Buffer busy waits、Db file parallel read等,也有相应的处理方式: - **Buffer busy waits**:这通常是由于数据块被多个会话并发访问造成的。可以通过增加缓存缓冲区大小、优化I/O子...

    基于等待事件的Oracle数据库性能优化.pdf

    常见的非空闲等待事件包括:缓冲区忙等待(buffer busy waits)、库缓存加载(library cache load)、控制文件等待(control file)等,这些事件通常与I/O性能、内存管理和并发控制相关。 为了进行性能优化,首先...

    oracle非空闲等待事件

    7. **Buffer Busy Waits(缓冲区忙等待)**:当一个进程需要访问的数据块正在被其他进程使用时,会发生此等待。优化数据访问,减少并发冲突,有助于减少这类等待。 8. ** PGA (Program Global Area) Memory**:当...

    How to Use AWR reports to Diagnose Database Performance Issues

    “Buffer busy waits”通常与数据块的锁争用相关,可能需要调整并发控制策略或优化数据访问模式。 除了单独使用AWR报告外,配合使用ADDM(Automatic Database Diagnostic Monitor)报告可以更高效地定位问题。ADDM...

    30种oracle常见的等待事件说明.zip_oracle

    2. **Buffer Busy Waits**: 当一个进程试图访问的数据块正在被其他进程修改时,会等待该数据块变为可用。优化表空间的物理布局和使用更有效的查询可以减少这种情况。 3. **DB File Sequential Read**: 这个等待发生...

    oracle 常见等待事件及处理方法

    4. **buffer busy waits**:当一个缓冲区被其他会话独占时,就会发生这种等待,可能是因为“热块”问题,即多个事务尝试修改同一数据块。解决方法包括使用行级锁定,优化并发控制,或增大DB_CACHE_SIZE以减少冲突。 ...

    Oracle8i Internal Services for Waits, Latches, Locks,and Memory

    - **系统等待(System Waits)**:主要涉及数据库内部的资源竞争,如缓冲区忙等待(Buffer Busy Waits)。 - **等待统计信息**:Oracle提供了各种视图(如V$WAITS和V$SYSTEM_EVENT)来记录等待事件,便于分析性能问题。...

    Oracle Wait Interface性能诊断与调整实践指南

    例如,如果"buffer busy waits"频繁出现,可能表明缓存争用严重。 4. **性能调整策略**:根据识别出的问题,可以采取多种策略进行调整,如增加缓存大小、优化索引、调整后台进程数量等。 5. **验证效果**:实施调整...

    性能工程系列之一性能测试篇PPT学习教案.pptx

    非空闲等待事件,如buffer busy waits、db file scattered read、db file sequential read等,通常揭示了系统中的竞争和资源冲突,需要通过深入分析来解决。 针对I/O统计的诊断,可以使用SQL查询来获取表空间、...

    试谈ORACLE的工作机制.docx

    2. 执行计划执行,通过cache buffer chain latch保护和pin操作,从数据文件读取或更新数据块,可能产生buffer busy waits等待。 3. Redo log buffer记录操作的详细信息,包括回滚段的前镜像和后镜像。 4. 在Undo ...

    监控数据库性能的SQL.doc

    常见的等待事件有`buffer busy waits`(缓冲区忙等待)、`log file sync`(日志文件同步)等。深入分析这些等待事件,有助于定位性能问题并采取相应优化措施。 **监控表空间的I/O比例** 表空间的I/O比例反映了数据...

Global site tag (gtag.js) - Google Analytics