free buffer waits,buffer busy waits

free buffer waits
基于性能上的考虑,当server process扫描LRU主列时,同时会将LRU-W上的脏块写到LRU链上,若没有足够可用的buffer cache,进程并不会无休无止的扫描LRU主列,而是达到一定的阈值(这个值由_db_block_max_scan_pct)决定。
DBWR写脏块完成之前,服务进程等待空闲缓冲区时会出现free buffer waits。
原因:
1)、低效的sql,低效的sql会访问过多的空闲缓冲区
2)、buffer cache小
3)、dbwr写的慢。可以通过改善存储的性能、使用多个DBWR进程来加快DBWR进程写脏块的速度
DBWR在写脏块的时候,会以exclusive模式占用脏缓冲块,此时若有其他会话要修改或者修改缓冲区,则需要DBWR进程写数据块结束,并出现write complete waits等待事件。当出现write complete waits等待事件时,存储性能存在问题的可能性比较大
free buffer waits:没有buffer cache了,需要等待DBWR将脏块写到数据文件中,此时等待
write complete waits:只有一种方式--DBWR写的太慢了,若DBWR将脏块写到datafile时存在session的访问,本身就是不正常的,因为按照访问的频率来讲,被经常访问的数据块应该被后置换出去,这说明现在被置换出去的块在buffer cache中已经是最少被访问的了,而DBWR却让然没有将其写入到datafile中,只能是dbwr慢了;
buffer busy waits
多个会话无法共享缓冲区中的数据块
在10g中分为了:
buffer busy waits:
最常见的模式就是堵塞,在一个会话正在更新一个数据块时,另一个会话想要读取这个块,此时不得不等待
实践表明:手动高端管理方式管理的段头在大量并发insert操作时容易引起争用。
read by other session:
在会话读取的时候,此时在buffer cache中已经没有该信息了,无法读到;一个或者多个会话在读取高速缓存中不存在的数据块时,发现该数据块正在被另外一个会话读取;此等待事件经常与db sequential read 或者db scattered read等待事件一起出现;

通常情况下,要短时间内快速定位因其性能故障的SQL语句往往比较困难。牵一发为而动全身!
read by other session
db file sequential read
此时快速定位问题就显得比较困难了,有经验的DBA此时会排除不是因为执行计划导致后,kill 掉所有的连接,系统一般可以快速恢复,而不建议重启数据库,因为重启之后,实例中的动态视图信息会被重置,不利于故障分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值