网站开发公司飞沐,做网站收益,php可视化网站开发,在线免费网站建设基于性能上的考虑#xff0c;服务器进程在扫描LRU主列的同时#xff0c;会将脏块移至LRU-W列#xff0c;如果发现没有足够可用#xff08;可替换#xff09;的BUFFER CACHE#xff0c;进程并不会无止尽地扫描整条LRU主列#xff0c;而是在扫描到某个阀值#xff08;该阀…基于性能上的考虑服务器进程在扫描LRU主列的同时会将脏块移至LRU-W列如果发现没有足够可用可替换的BUFFER CACHE进程并不会无止尽地扫描整条LRU主列而是在扫描到某个阀值该阀值由隐含参数_db_block_max_scan_pct决定。不同的版本该隐含参数值可能会不同在Oracle 10g中默认值为40后就停止扫描。这时前台进程会通知DBWR进程将相关脏块写进数据文件中以得到空闲缓冲区。DBWR进程写脏块完成之前服务器进程等待空闲缓冲区时会出现FREE BUFFER WAITS等待事件。FREE BUFFER WAITS等待事件通常是由以下原因引起的 低效的SQL。低效的SQL会过多请求空闲缓冲区因此FREE BUFFER WAITS等待也会响应增加。 BUFFER CACHE过小。这个比较好理解。 DBWR进程写脏块的速度不够快。可以通过改善存储性能、使用多个DBWR进程来加快DBWR进程写脏块的速度。 DBWR进程将脏块写到数据文件时将会以EXCLUSIVE模式占有脏缓冲区。此时如果有其他进程要读取或修改缓冲区则需要等待DBWR进程写数据块结束并出现WRITE COMPLETE WAITS等待事件。当出现WRITE COMPLETE WAITS事件时存储存在性能问题的可能性比较高。 提示 请读者仔细体会FREE BUFFER WAITS等待事件和WRITE COMPLETE WAITS等待事件的区别。根据经验FREE BUFFER WAITS等待事件常由应用引起而WRITE COMPLETE WAITS等待事件则常由存储性能问题引起。