【转】Cache Buffer Chain 第三篇

简介: 文章转自:http://oracle.chinaitlab.com/induction/862509.html,文章前部分转载,后部分自己加上的。 Oracle数据库只读模式的CACHE BUFFERS CHAINS测试是本文我们主要要介绍的内容,虽然从Oracle 9i里边引入了只读模式的CA...

 文章转自:http://oracle.chinaitlab.com/induction/862509.html,文章前部分转载,后部分自己加上的。

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 i int;  
2   begin for i in 1..50000 loop insert into test values(i,'adsfsafsa');  
3   end loop;  
4 end;

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

1 create index test_i on test(a);

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

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

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

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

6.查询等待事情发现latch: cache buffers chains

1 SELECT event,
2   total_waits ,
3   time_waited
4 FROM v$session_event
5 WHERE sid=
6   (SELECT sid FROM v$mystat WHERE rownum=1
7   )
8 ORDER BY 3 DESC;
EVENT                          TOTAL_WAITS TIME_WAITED
------------------------------ ----------- -----------
SQL*Net message from client            223      167283
resmgr:cpu quantum                      14        1022
db file sequential read                222          21
library cache lock                      47          12
control file sequential read         15400           7
latch: shared pool                       1           1
direct path write                       30           1
SQL*Net message to client              224           0
SQL*Net more data to client              1           0
SQL*Net break/reset to client           10           0
library cache: mutex X                   2           0
events in waitclass Other                6           0
log file sync                            4           0
enq: RO - fast object reuse              3           0
buffer busy waits                        3           0
latch: cache buffers chains              8           0
Disk file operations I/O                 8           0
latch: In memory undo latch              8           0

结论:就算以只读模式获取cache buffers chains LATCH并不能完全解决这个LATCH争用的问题,只是争用程度不那么严重了.

相关文章
Cache 和 Buffer 有什么区别?
Cache 和 Buffer 有什么区别?
116 0
|
内存技术
cache基础
cache
120 0
|
SQL Oracle 关系型数据库
0821Cache Buffers chains与共享模式疑问4
[20170821]Cache Buffers chains与共享模式疑问4.txt --//昨天别人问的问题,就是在读读模式下,访问相同数据块,11.2.0.4不再出现cache buffers chains latch等待事件.
1177 0
|
缓存
free命令、buffer与cache的区别
freefree 命令相对于top 提供了更简洁的查看系统内存使用情况: # free total used free shared buffers cached Mem: 255988 ...
884 0
|
缓存 Oracle 关系型数据库
Ask Hoegh(5)——buffer cache和buffer有什么区别?
问: Oracle数据库的SGA包含db block buffer cache和redo buffer等组件,那么,同样属于内存,buffer cache和buffer有区别吗? 答:首先我们对比一下db block buffer cache和redo buffer的概念和功能。
1179 0
|
关系型数据库 Oracle Linux
1104Cache Buffers chains与共享模式疑问4
[20151104]Cache Buffers chains与共享模式疑问4.txt http://blog.itpub.net/267265/viewspace-1822491/ SCOTT@book> @ &r/ver1 PORT_STRING      ...
859 0