row cache字典缓冲区简介

字典缓冲区: dictionary cache,也叫row cache;

用于保存数据字典信息:如表空间相关信息、用户权限、objects信息、histogram信息等。

字典缓冲区在大小无法直接调整,只能通过调整共享池大小来调整字典缓冲区大小。

SYS@ bys3>select pool,name ,bytes/1024/1024 MB from v$sgastat where name like 'row cache%';

POOL         NAME                               MB

------------ -------------------------- ----------

shared pool  row cache child latch      .004959106

shared pool  row cache                  4.12324524

我的实验环境,字典缓冲区大小为4M多一点,还可以统计出row cache child latch的大小。

#####################################################################

row cache child latch

V$ROWCACHE视图可以查询保存在row cache中的对象信息。

row cache child latch的子latch个数:

SYS@ bys3>select count(name),name from v$latch_children where name like 'row cache%' group by name;

COUNT(NAME) NAME

----------- ----------------------------------------------------------------

52 row cache objects

每个子latch管理着不同的对象。

使用场景:

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/storage/

硬解析时需要从数据字典信息中生成执行计划,row cache信息由row cache child latch保护,所以在并发访问row cache时会引起row cache child latch竞争。

row cache child latch 常见场景:

1.DDL操作需要修改数据字典

2.SEQUENCE:原因是SEQUENCE的NEXTVAL操作对row cache objects以SSX(SHARED SUB_EXVLUSIVE)独占模式获得row cache lock. 当多个进程同时对同一SEQUENCE的NEXTVAL进行调用时会发生:latch:row cache objects等待事件。

如CACHE过小,当CACEH分配的值用完会重新获取一次CACHE,会更新seq$基表并提交---修改ROW CACHE信息,会话会一直持有SQ锁,会出现enq:sq-contention等待事件。---P2值是对象号。

NOCACHE:每次使用NEXTVAL,都要更新seq$基表并提交。

关于SEQUENCE,详见:http://blog.csdn.net/haibusuanyun/article/details/17248029#t2

3.SYS.AUDSED$: ORACLE 10.2.0.4之前SYS.AUDSED$的CACHE值为20,主要用于V$SESSION.AUDSID的取值。当出现大量并发短连接--登陆风暴,容易因SYS.AUDSED$的CACHE值过小引起会话一直持有SQ锁,出现enq:sq-contention等待事件。===解决方法:将SYS.AUDSED$的CACHE值改大。

10.2.0.4之后,SYS.AUDSED$的CACHE值默认为10000.

4.通过远程DBLINK访问的SQL在本地解析时要获取16号row cache child latch,可能会引起争用--可以在内存足够情况下增大共享池及PGA大小,增加session_cache_cursor大小---注意要重启库且要注意增大会占用更多内存。  --此案例见周亮《ORACLE DBA 实战攻略》301页。

时间: 2024-11-19 03:06:32

row cache字典缓冲区简介的相关文章

Row Cache For InnoDB 第二版优化(附带安装和配置说明)

下载见:http://code.google.com/p/row-cache-for-innodb/downloads/detail?name=row_cache_for_mysql.5.1.48_2011_06_16.diff&can=2&q=#makechanges 下面说一下第二版的一个改进: 1. log的显示优化了.能够显示出打log的时间了,也能正确换行2. 优化misc内存的占用..3. 对小内存分配进行了优化(单独的内存池)4. 可配置对需要的索引进行缓存,而不是无差别的对

使用sysbench来测试Row Cache解惑

最近大牛 姜承尧  也在测试Row Cache,发现使用sysbench来进行测试效果不是很明显. 分析了一下 sysbench的三个测试场景uniform,gaussian,special都不是很符合Row Cache的使用场景导致效果不明显 先来解释一下 Row Cache要解决的问题主要是在有热门数据且热门数据分布很离散的情况下Page缓存导致的内存利用率低的问题,我们做过测试,在innodb内部对Page访问打点的统计来看,一个row有500字节大小,热门数据大概占千分之一地情况下,Pa

密码错误频繁登录引发的“library cache lock”或“row cache lock”等待

密码错误频繁登录引发的"library cache lock"或"row cache lock"等待 对于正常的系统,由于密码的更改,可能存在某些被遗漏的客户端,不断重复尝试使用错误密码登录数据库,从而引起数据库内部长时间的"library cache lock"或"row cache lock"的等待,这种情形非常常见.这种现象在Oracle 10.2和11.1中体现的等待事件为:"row cache lock&q

ORACLE Active dataguard 一个latch: row cache objects BUG

在Active dataguard遇到latch: row cache objects 查询如下语句 select a.SAMPLE_TIME,a.SQL_ID,a.EVENT,a.P1TEXT,a.P1,a.P2TEXT,a.P2,a.P3TEXT,a.P3,  b.f2   from v$active_session_history a,     (select max(b.SQL_TEXT) f2,sql_id from  v$sql b group by sql_id ) b  wher

latch: row cache objects 和cursor: pin S wait on X共同出现

 Snap Id Snap Time Sessions Cursors/Session Begin Snap: 5980 11-Nov-13 16:00:37 1403  39.6 End Snap: 5981 11-Nov-13 16:31:29 1422  42.8 Elapsed:    30.86 (mins)    DB Time:    3,660.60 (mins)    Per Second Per Transaction Redo size:  1,185,514.75  6,

【等待事件】序列等待事件总结(SQ、SV、row cache lock、DFS lock handle)

                                                                                                      > > >                                      >  >             >             >                      >             >            &g

用户表空间限额(Oracle User Space Quota )

原文转自:http://www.askmaclean.com/archives/know-more-about-oracle-user-space-quota.html Tablespace Quota 表空间限额是Oracle数据库中限制User使用空间的重要手段,我们来深入浅出地了解一下Space Quota在内部的实现: SQL> select * from v$version; BANNER ------------------------------------------------

python模块简介之有序字典(OrderedDict)_python

有序字典-OrderedDict简介 示例 有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的.参见下面的例子: import collections print 'Regular dictionary:' d = {} d['a'] = 'A' d['b'] = 'B' d['c'] = 'C' d['d'] = 'D' d['e'] = 'E' for k, v in d.items(): print k, v print '\nOrderedDict

Oracle后台进程及其作用简介

Oracle后台进程及其作用简介 This background process is available starting with Oracle Database 11g Release 2 (11.2.0.2). describes Oracle Database background processes. In this context, a background process is defined as any process that is listed in V$PROCESS