Oracle数据库只读模式的CACHE BUFFERS CHAINS测试

Oracle数据库只读模式的CACHE BUFFERS CHAINS测试是本文我们主要要介绍的内容,虽然从Oracle 9i里边引入了只读模式的CACHE BUFFERS CHAINS,但是在获取BUFFER LOCK的时候,还是会请求CACHE BUFFERS CHAINS,但是情形没有8i里边那么严重了,接下来我们对其进行测试。

测试步骤如下:

1.首先建一个表。

 

 
 
 
  1. create table test (a int,b varchar2(20)); 

 

2.往这个表里INSERT 50000行数据;

 

 
 
 
  1. declare  
  2. i int;  
  3. begin  
  4. for i in 1..50000  
  5. loop  
  6. insert into test values(i,'adsfsafsa');  
  7. end loop;  
  8. end; 

 

3.在A的栏位上创建一个INDEX;

 

 
 
 
  1. create index test_i on test(i); 

 

4.编一个存储过程;进行大量的索引扫描操作

 

 
 
 
  1. create or replace procedure test_k is  
  2. begin  
  3. for i in (select /*+ INDEX(TEST TEST_I) */ * from test where a>20000)  
  4. loop  
  5. null;  
  6. end loop;  
  7. end; 

 

 5.打开2000个会话来执行这个存储过程;

 
 
 
  1. var i number;  
  2. begin  
  3. for j in 1..2000  
  4. loop  
  5. dbms_job.submit(:i,'TEST_K;');  
  6. commit;  
  7. end loop;  
  8. end; 

 

6.查询等待事情发现latch: cache buffers chains等待很严重,CPU运大部分时间都运行在SYS模式下.

 

 
 
 
  1. 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测试的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!

【编辑推荐】

  1. Oracle数据库学习笔记之表的联合查询
  2. Oracle数据库RMAN不完全恢复之基于SCN恢复
  3. Oracle数据库RMAN不完全恢复之基于时间恢复
  4. Oracle C#实现Oracle Text全文检索的简单例子
  5. Oracle数据库RMAN不完全恢复之基于日志序列号恢复

 

THE END