一个巧妙解除hot block引起的cache buffers chains latch争用的方法之一,就是推荐是将PCTFREE值去高,因为PCTFREE值取高,
将Hot Block分散,因此latch争用有时也会减少,但是这次测试因块数增加得过多,可以发现latch争用增加。这是因为为了执行update
而扫描的过程中,会发生latch争用。一般较高的pctfree有利于消除DML引起的争用。较低的PCTFREE有利于消除SELECT引起的争用。
因此DML和select都出现时,只变更PCTFREE值不能消除争用问题的可能性较高。这个原理在修改块大小时也同样适用。
以上测试结果意味着为了减少update/update引起的buffer busy waits等待,调整较高的storage属性,有引起cache buffer chains latch
争用等另外性能问题的可能性,因此,为解决buffer busy waits问题。而变更storage属性时,需要经过充分测试,检查是否是有其他性能上的
负面效果后应用。
buffer busy waits ,减少buffer lock争用的方法,解决办法总结:
1、 减少select/select引发的read by other session等待的最好办法是通过SQL的最优化利用最少的I.O获得需要的结果,如果通过这个操作
也不能解决问题,就需要检查SGA(高速缓冲区)大小适当与否。
2、 select/update 引发的read by other session等待与select/select 引起的read by other session等待的解决办法相同。
3、 insert/insert引发的buffer busy waits等待,通过使用适当的段空间管理方法得以解决,oracle 9i以上版本推荐使用ASSM,oracle8i
则合理设定FREELISTS值,与事务量相比FREELISTS值过小时,buffer lock引起的争用广泛出现。光靠FREELISTS值不能解决问题,调高
_bump_highwaer_mark_count隐含参数数值也是有帮助的。对于这个隐含参数在HW锁争用相关的等待事件上仔细讨论。
4、update/update引发的buffer busy waits等待,可以通过采用避免对相同块同时执行update的方法得以解决,创建update形式考虑周全
的最优partitioning将成为最好的解决办法,通过取高PCTFREE使用较小的块(9i开始可能),可以将块分散,因此能减少buffer lock争用。
但是如上述测试结果,必须通过测试检验是否有负面影响。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7194105/viewspace-704000/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7194105/viewspace-704000/