[OWI] Buffer Busy Waits

Buffer Busy Waits

1. Basic Info

访问特定块的进程需要得到对特定块获得 Buffer Lock。假如要修改特定的块,需要以独占(Exclusive)模式获得的 Buffer Lock。相反,只是要读取特定块需要以共享(Shared)模式获得 Buffer Lock。

如果进程 A 对块 X 已获得 Buffer Lock 的状态时,因进程 B 对同一个块不能以互换模式获取而进行 Buffer Lock 等待。 这时发生的就是 buffer busy waits 事件。

Buffer busy waits 最常见的情况是在多个进程对同一个块进行 Insert 或者 Update 的情况。对块进行 Insert 或者 Update 的时候, 要求以独占模式获取 Buffer Lock 的争用,通过 buffer busy wait 事件来进行观察。

2 Parameter & Wait Time
2.1 Wait Parameters

buffer busy waits 等待事件的等待参数如下。

P1: File#
P2: Block#
P3: 在 Oracle 10g 表示的是块类 (block class),在 Oracle 9i 表示的是 Reason Code。


2.2 Wait Time
一般等待1秒。假如为了以独占模式获取 Buffer Lock 等待 Buffer busy wait 事件 1 秒后, 再次获取时,需要等待 3 秒。要读取特定块的会话必须获得 Buffer Lock。

3. Check Point &  Solution
因不同的块类而发生 buffer busy waits 事件的原因和解决方法如下。

数据块
(块类=1)


用户应用程序的多个会话对同一块执行修改的时,这种块称一般称为热块 (Hot Block)。 解决热快的方法有以下几种。对用户进程进行修改: 通过对应用修改使得多个会话不会同时对一个块进行修改。

PCTFREE 值得调整: 通过加大 PCTFREE 值创建对象时,在一个块里的行数自然会减少,从而减少对块的争用。 

- 右倾索引的修改:索引键右倾斜会发生对索引叶节点的争论。最具代表性的是利用序列(sequence)值产生的键
的值作为索引使用。这时可以利用反转索引 (Reverse Index)使键值分散,从而减少争用。

使用 FLM 时:使用 FLM(Free List Management) 的时候,在 Storage 属性中要赋予充分大的FREELISTS 属性值。FREELISTS的值是 1 的时候,因为会有多个进程对同一个块 Insert 而发生争用。FREELISTS值最好赋予成可以同时执行 Insert 进行的最大值

分区 (partitioning):通过段的分区可以任意的分散块。如果通过使用像哈希分区(Hash Partition)技术把聚集在一个块上的块用物理方法随机分散到任意空间上,以此可以减少争用。
段头
(块类=4)

使用 FLM 的时候,在 Storage 属性中赋予充分大的 FREELISTS 属性值。如果是在 OPS 或 RAC 的环境下,需要给 FREELIST GROUPS 赋予跟实例个数一样的值。赋予了 FREELIST GROUPS 属性值后,与段头块使用不同的 FREELIST, 所以会减少对段头块的争用。
位图块
(块类= 8, 9, 10)

使用 ASSM (Automatic Segment Space Management) 时可能会发生三个阶段的位图块的争用。位图块中发生的块争用无法利用 Oracle的调优而改善,而是要通过应用程序的修改要减少过多的并发的DML。

ASSM 堆大规模的同时 DML 相比较 FLM 是有一点的开销。但大部分情况下的这种开销是可以无视的。ASSM 相比 FLM 提供更多有点,特别对 RAC 提供最佳性能。
回滚头快 (块类=15+2*r)
使用 AUM(Automatic Undo Management)的时候在回滚头的块不会经常出现发生争用。使用手动模式的回滚头段时,提供足量的回滚段数而减少回滚段的争用。



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

转载于:http://blog.itpub.net/31135309/viewspace-2092634/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值