Oracle数据库只读模式的CACHE BUFFERS CHAINS测试是本文我们主要要介绍的内容,虽然从Oracle 9i里边引入了只读模式的CACHE BUFFERS CHAINS,但是在获取BUFFER LOCK的时候,还是会请求CACHE BUFFERS CHAINS,但是情形没有8i里边那么严重了,接下来我们对其进行测试。
测试步骤如下:
1.首先建一个表。
class="dp-xml">
- 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测试的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!