ITPub博客

首页 > 数据库 > Oracle > Buffer busy waits

Buffer busy waits

原创 Oracle 作者:lvqiao2009 时间:2007-05-23 15:19:55 0 删除 编辑

Buffer busy waits 等待事件表示当前在等待中的会话想操作的buffer 正在被别的会话占有使用或正在被别的会话读入到buffer中。
所以要等待别的会话使用完后释放这个buffer。

产生这个等待事件的原因很多。我就挑二个主要和常见的原因讲述我的见解。

第一种
数据块在buffer中,被其它会话占有进行DML操作,导致后面的会话大量buffer busy waits等待。

解决办法
1.减少每一个块的row数。
a.修改pctfree参数.
重建对象,把pctfree参数值增加,
注:增加后与pctused的差不要太近,如果这个差太小会造成free_list的竟争。
如把pctfree设为49 pctused为50,则只要稍微删除一点空间,块的空闲空间大于49%,系统就会认为这个块可用而把这个块挂到free_list
上去。只要稍微增加一点数据,块的空闲空间只剩到了49%,系统又会认为这个块没有空闲空间进行新数据插入,又要把这个块从free_list上摘下来。频繁操作会导致free_list竟争。
b.ALTER TABLE table_name MINIMIZE RECORDS_PER_BLOCK;
2.在oracle 9i以后,支持多种块大小的表空间。所以可以选择先建小块的表空间,并把相关对象建到新建小块表空间中。
第二种在数据字典管理表空间中
是对数据段头的Buffer busy waits.
主要原因是段头进行HWM操作或Free_list操作或对区间图操作过频繁。
解决办法
1.增加free_list or free groups.
2.确认pctfree and pctused两者的和不能太大.
3.存储参数 next extent 不要太小.以致extent size过小,数量过大,对extent map操作过频。

[@more@]

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

上一篇: 等待事件之log篇
请登录后发表评论 登录
全部评论
  • 博文量
    19
  • 访问量
    167021