Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2803015
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2011-08-29 21:38:24

只读模式的CACHE BUFFERS CHAINS

虽然从ORACLE 9I里边引入了只读模式的CACHE BUFFERS CHAINS,但是在获取BUFFER LOCK的时候,还是会请求CACHE BUFFERS CHAINS,但是情形没有8I里边那么严重了,测试一把,

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争用的问题,只是争用程度不那么严重了.

 

阅读(2511) | 评论(0) | 转发(0) |
0

上一篇:CACHE BUFFER CHAIN

下一篇:RESOURCE MANAGER的使用

给主人留下些什么吧!~~