测试步骤如下:
1.首先建一个表.
create table test (a int,b varchar2(20));
2.往这个表里INSERT 50000行数据;
declare i int; begin for i in 1..50000 loop insert into test values(i,'adsfsafsa'); end loop; end;
3.在A的栏位上创建一个INDEX;
create index test_i on test(i);
4.编一个存储过程;进行大量的索引扫描操作
create or replace procedure test_k is begin for i in (select /*+ INDEX(TEST TEST_I) */ * from test where a>20000) loop null; end loop; end;
5.打开2000个会话来执行这个存储过程;
var i number; begin for j in 1..2000 loop dbms_job.submit(:i,'TEST_K;'); commit; end loop; end;
6.查询等待事情发现latch: cache buffers chains等待很严重,CPU运大部分时间都运行在SYS模式下.
Cpu(s): 16.3%us, 83.7%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
结论:就算以只读模式获取cache buffers chains LATCH并不能完全解决这个LATCH争用的问题,只是争用程度不那么严重了.
关于Oracle数据库只读模式的CACHE BUFFERS CHAINS测试的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!