oracle buffer busy waits等待的内核解释

来源:这里教程网 时间:2026-03-03 19:08:11 作者:

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 wait1.抬高高水位线2.buffer busy wait主要由写堵塞写或者写堵塞读,减少写操作的持有buffer pin(X独占)锁的时间,整体上buffer busy wait会下来。

相关推荐