|
本帖最后由 vage 于 2012-5-10 23:03 编辑
oracledba 发表于 2012-5-10 18:32 ![]()
这些都是内存对内存的操作,和IO操作比都不是一个量级的,我都怀疑log buffer space不是在你top 5里,占有的 ...
对了,我都有点忘了。这是年初的时候帮朋友那里处理的一个问题。Log buffer space肯定还是有的,但不明显,因为他数据库性能还可以。我让他把Redo挪到更快的存储里,只是从宏观上,减少了Buffer Busy Wiats的等待次数和时间。要说这样做的效果,用户哪边也没太感觉出来。
后来我还专门测试了好久,结果有点忘了。
我是这样测的,找两个会话:
1、一个会话反复Update一行
2、另一个会话反复Select同一块中的行
然后,将Redo放在较慢的存储上,和放在较快的存储上。
最后,比较Redo在慢存储上时和快存储上时Buffer busy waits的变化。
变化还是有点大的。有兴趣可以试试。我现在找不到有快、慢LUN的测试环境。
因为都只反复操作同一个块,因此都是逻辑读,可以排除“等待的减少是IO互相影响的少了”这种情况。
我觉得,Log Buffer Space在Redo放在慢存储上时,一定会比快存储上要严重。
我的测试脚本很简单:
脚本1:反复查询的脚本
declare
j number;
begin
for i in 1..3000000 loop
select id into j from a1 where rowid='AAAChqAAEAAAAAMAAA';
end loop;
end;
/
脚本2:
反复Update的脚本:
begin
for i in 1..3000000 loop
update a1 set id=id+0 where rowid='AAAChqAAEAAAAAMAAA';
end loop;
commit;
end;
/
|
|