设为首页 加入收藏

TOP

[20190214]11g Query Result Cache RC Latches.txt(一)
2019-09-17 18:08:27 】 浏览:98
Tags:20190214 11g Query Result Cache Latches.txt

[20190214]11g Query Result Cache RC Latches.txt

--//昨天我重复链接http://www.pythian.com/blog/oracle-11g-query-result-cache-rc-latches/的测试,
--//按照我的理解如果sql语句密集执行,使用Result Cache反而更加糟糕,这是我以前没有注意到的。
--//联想我们生产系统也存在类似的问题,我们有1个判断连接的语句select count(*) from test_connect;
--//在业务高峰它执行可以达到1600次/秒。另外一个简单的select sysdate from dual; 也达到800次/秒。
--//而实际上业务高峰sql语句执行率3000次/秒。这样的2条语句就占了2400次/秒。我以前一直以为将表设置
--//为result cache,可能提高执行效率,还是通过例子测试看看。

1.环境:
SCOTT@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> show parameter job
NAME                TYPE    VALUE
------------------- ------- ------
job_queue_processes integer 200

SCOTT@book> select * from v$latchname where name like 'Result Cache%';
LATCH# NAME                          HASH
------ ----------------------- ----------
   436 Result Cache: RC Latch  1054203712
   437 Result Cache: SO Latch   986859868
   438 Result Cache: MB Latch   995186388
--//我看到Result Cache名字与作者的不同,命名为Result Cache: RC Latch。

SCOTT@book> select name,gets from v$latch where lower(name) like '%result cache%';
NAME                                 GETS
------------------------------ ----------
Result Cache: RC Latch                  0
Result Cache: SO Latch                  0
Result Cache: MB Latch                  0

SCOTT@book> select count(*) from v$latch_children where lower(name) like '%result cache%';
  COUNT(*)
----------
         0

--//可以注意一个细节,Result Cache没有children latch。也仅仅1个Result Cache: RC Latch 父latch。从这里也可以看出如果
--//做了result cache的表,多个用户并发执行,可能反而不能获得好的性能,可能出现大量的Result Cache: RC Latch争用的情况.

2.建立测试例子:

create table t as select rownum id from dual ;
create unique index pk_t on t(id);
--//分析略。

SCOTT@book> create table job_times ( sid   number, time_ela number);
Table created.

--//按照源链接的例子修改如下:
create or replace procedure do_work(
 p_iterations in number
) is
 l_rowid  rowid;
 v_t number;
begin
 insert into job_times
  values (sys_context('userenv', 'sid'), dbms_utility.get_time)
  returning rowid

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇创建<Bean>sessionFactory.. 下一篇[20190214]11g Query Result Cach..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目