这几天一直在学习周亮的书,来不及整理。每当看到有精彩之处,都会做做笔记,以备以后有用。
Oracle会基于性能的考虑,当服务进程在扫描LRU时,同时会将脏块移到LRU-W列,如果发现没有足够可用的BUFFER CACHE,进程并不会一直扫描整条LRU主列,而是在扫描某个
阀值(_db_block_max_scan_pct决定),当到达某个阀值后就会停止扫描。这时,前台进程会通知DBwr进程将相关脏块写到数据文件中,以得到空闲缓冲区。DBWR进程写脏块完成前,
服务进程等待空闲缓冲区时,会出现FREE BUFFER WAIT等待事件。
FREE BUFFER WAIT导致的原因:
1) 效率较低的SQL,因为低效的SQL会请求多空闲缓冲区,那么 FREE BUFFER WAIT等待就会增加
2) BUFFER CACHE过小
3) DBWR的写入速度不够快。可以使用多个DBWR进程来加快DBWR进程写脏块的速度
DBWR进程将脏块写到数据文件时,会以EXCLUSIVE模式占有脏缓冲区,如果这个时候呢有其他的进程对这个缓冲区进行修改,则需要 等待DBWR进程写数据块结束,并出现WRITE COMPLETE WAITS 等待事件。
------------------------------------区别----------------------------------
FREE BUFFER WAITS等待事件一般是由应用引起
WRITE COMPLETE WAITS 等待事件一般由存储性能问题引起 ->存储存在性能问题的可能性较高
Oracle会基于性能的考虑,当服务进程在扫描LRU时,同时会将脏块移到LRU-W列,如果发现没有足够可用的BUFFER CACHE,进程并不会一直扫描整条LRU主列,而是在扫描某个
阀值(_db_block_max_scan_pct决定),当到达某个阀值后就会停止扫描。这时,前台进程会通知DBwr进程将相关脏块写到数据文件中,以得到空闲缓冲区。DBWR进程写脏块完成前,
服务进程等待空闲缓冲区时,会出现FREE BUFFER WAIT等待事件。
FREE BUFFER WAIT导致的原因:
1) 效率较低的SQL,因为低效的SQL会请求多空闲缓冲区,那么 FREE BUFFER WAIT等待就会增加
2) BUFFER CACHE过小
3) DBWR的写入速度不够快。可以使用多个DBWR进程来加快DBWR进程写脏块的速度
DBWR进程将脏块写到数据文件时,会以EXCLUSIVE模式占有脏缓冲区,如果这个时候呢有其他的进程对这个缓冲区进行修改,则需要 等待DBWR进程写数据块结束,并出现WRITE COMPLETE WAITS 等待事件。
------------------------------------区别----------------------------------
FREE BUFFER WAITS等待事件一般是由应用引起
WRITE COMPLETE WAITS 等待事件一般由存储性能问题引起 ->存储存在性能问题的可能性较高
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30430420/viewspace-1797304/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30430420/viewspace-1797304/