ITPub博客

首页 > 数据库 > Oracle > oracle buffer busy waits等待的内核解释

oracle buffer busy waits等待的内核解释

原创 Oracle 作者:wanglinghua0907 时间:2023-12-29 22:00:38 0 删除 编辑

buffer busy waits:读不堵塞写,写堵塞读。


一个会话读、另个会话写这个buffer,写的同时又有个会话读这个buffer产生等待buffer busy waits


oracle修改一个buffer的步骤。

减少2-7步骤的时间可以减少buffer busy waits。

期间主要工作就是  生成redo和修改buffer中的内容。修改buffer内容是调用系统函数memcpy完成,几乎没优化空间。

主要是在生成redo上。


生成redo简单流程是:

在pga中记录后映象数据,传到共享池,然后传到log buffer中,如果log buffer没空间,进程会先等LGWR刷新

log buffer中的空间,腾出空间后才能继续(此时等待为log buffer space)。


产生redo遭遇log buffer没空间的情况有时候还是存在的,产生redo花费时间大大增加。

因此, 保证log buffer有空间可以减少buffer pin锁的持有时间。


Log buffer没空间的原因是产生的redo太多或者LGWR写的太慢。redo过多为应用问题,无法改变。

LGWR写的慢是IO慢,加快IO写的性能,可以提高log buffer中空闲空间比例,可以增加redo产生的速度,

减少独占buffer pin锁的持有时间。


所以把redo放在更快的存储设备上,可以减少buffer busy waits时间。


buffer busy wait

1.抬高高水位线

2.buffer busy wait主要由写堵塞写或者写堵塞读,减少写操作的持有buffer pin(X独占)锁的时间,整体上buffer busy wait会下来。



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

请登录后发表评论 登录
全部评论
Oracle ACE、sql server、oceanbase数据库专家,拥有7年以上的大型数据库运维经验,主方向oracle,擅长故障排除、诊断,大体量(TB)迁移,异常故障修复等。拥有丰富主导大型项目经验。服务行业包括:运营商、银行、金融业、政府单位、医疗、制造业、高校等等。

注册时间:2020-07-31

  • 博文量
    116
  • 访问量
    88795