首页 > 其他分享 >buffer cache实验6-latch:cache buffers lru chains

buffer cache实验6-latch:cache buffers lru chains

时间:2023-02-27 11:32:48浏览次数:33  
标签:chain buffer cache lru LATCH buffers


1.working set与Latch:cache buffers lru chain:

每个working set都具有它自己的一组LRU和LRUW链表(LRU和LRUW链表总是成对出现的)。


ORACLE为了提高buffer cache性能(大内存),使用了多个working set


每个working set都由一个名为“Latch:cache buffers lru chain”的latch来保护,每一个lru latch对应一个working set。

而每个被加载到buffer cache的buffer header都以轮询的方式挂到working set(包含的LRU链表)上去--。


而每个被加载到buffer cache的buffer header都以轮询的方式挂到working set上去。也就是说,当buffer cache加载一个新的数据块时,其对应的buffer header会去找一个可用的lru latch,如果没有找到,则再找下一个lru latch,直到找到为止。如果轮询完所有的lru latch也没能找到可用的lru latch,该进程只有等待latch free等待事件,同时出现在v$session_wait中,并增加“latch misses”。


如果启用了多个DBWR后台进程的话,每个DBWR进程都会对应一个不同的working set,而且每个DBWR只会处理分配给它的working set,不会处理其他的working set。



2.cache buffers lru chain LATCH的个数:

ORACLE默认创建的cache buffers lru chain LATCH数量与CPU个数、DBWR个数相关。


DBWR小于4,个数为:4*CPU个数


DBWR大于4,个数为:DBWR*CPU个数


每个buffer pool使用自己的cache buffers lru chain LATCH,一个数据库实例可以配置:DEFAULT,2KB,4KB,8KB,16KB,32KB,KEEP,RECYCLE 这8种类型的buffer pool,故cache buffers lru chain LATCH的数量最少为8个。详见:

​​点击打开链接​


或使用以下语句查出buffer cache中各个pool中cache buffers lru chain LATCH的获取情况:  --语句来自周亮《ORACLE DBA实战攻略》


SYS@ bys3>select d.blk_size,c.child#,p.bp_name,c.gets,c.sleeps from x$kcbwds d,v$latch_children c,x$kcbwbpd p where d.set_latch=c.addr and d.set_id between p.bp_lo_sid and p.bp_hi_sid order by c.child#;



  BLK_SIZE     CHILD# BP_NAME                    GETS     SLEEPS


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


      8192          1 KEEP                         18          0


      8192          3 RECYCLE                      18          0


      8192          5 DEFAULT                  864096        144


      2048          7 DEFAULT                      18          0


      4096          9 DEFAULT                      18          0


      8192         11 DEFAULT                      18          0


     16384         13 DEFAULT                      18          0


     32768         15 DEFAULT                      18          0



在我的虚拟机中,CPU是一个,在10G中是有8个LRU LATCH,在11GR2中,是16个LRU LATCH.见:javascript:void(0)



3.cache buffers lru chain LATCH在什么情况下需要使用:

数据块读入buffer cache前需要获得cache buffers lru chain LATCH--因为要到LRU上找空闲buffer


DBWR扫描LRUW链表前需要获得cache buffers lru chain LATCH


SMON将空闲buffer移动至LRU辅助列,也需要cache buffers lru chain LATCH。


4.cache buffers lru chain LATCH在哪些情况下出现争用:

简单说就是多个进程同时检索LRU/LRUW时出现。


具体情况有:   --物理读过多引起争用概念高。


多个会话并发访问不同表或索引,因为这样发生物理读可能较大--由上面可知物理读时需要在LRU找空闲buffer


脏块过多,DBWR写出慢(DBWR的性能不足-主机性能问题,或者磁盘I/O),涉及DBWR调优-在此不多讨论。



注:CBC LATCH主要发生在逻辑读时-多会话并发访问相同的表或索引-相同表或索引多集中于几条相同hash chain。




标签:chain,buffer,cache,lru,LATCH,buffers
From: https://blog.51cto.com/u_1652968/6088129

相关文章

  • buffer cache实验5-latch:cache buffers chain
    1.CBClatch产生的原理:一次逻辑读时CBClatch锁及Bufferpin锁的获取和释放过程如下:1.加LatchX2.进入hashchain,在相应的BH上加BufferpinS(0-->1)3.释放LatchX4.......
  • MemoryCache 7.0 可用的获取所有Key的方法
    参考:.NETCoreMemoryCache缓存获取全部缓存键-stone8386-博客园(cnblogs.com)根据参考所述方法获取Key出错,提示_entries为null,后搜索无果,通过vs自带反编译查看Mem......
  • 4.9-Cache地址映射与变换方法
    主存与Cache地址映射概念主存数据如何迁至Cache才能实现快速查找2.常见三种映射方法全相联映射直接相连映射组相联映射全相联工作原理主存分块,Cache分......
  • 使用ccache对C++编译加速
    使用ccache对C++编译加速我们使用cmake作为C++的编译编排系统,当修改CMakeLists.txt文件之后,就会对配置文件进行更新,再去进行make的时候,缓存就失效了,需要重新编译,当项目很......
  • 本地缓存无冕之王Caffeine Cache
    本文已收录至Github,推荐阅读......
  • latch: row cache objects等待dc_rollback_segments的处理
    上午有客户遇到UNDO空间问题导致的latch:rowcacheobjects(dc_rollback_segments ),经排查为节点2的UNDO表空间使用率100%,大部分为UNEXPIRED状态的UNDO段。虽然UNDO表空......
  • java的StringBuilder与StringBuffer类源码详解
     java的StringBuilder与StringBuffer类源码详解类的定义abstractclassAbstractStringBuilderimplementsAppendable,CharSequence{char[]value;intcount;......
  • 基于tmpfs 的nginx cache 优化
    昨天简单说明了下基于tmpfs的nginxproxy_cache优化,今天整体说明下参考图  流程说明修改之前的对于nginx使用了多级处理,ingress(也是基于nignx,openresty),对于......
  • webrtc QOS笔记二 音频buffer数据不足生成很多gap的问题
    webrtcQOS笔记二音频buffer数据不足生成很多gap的问题目录webrtcQOS笔记二音频buffer数据不足生成很多gap的问题记录个iusse.插入音频数据后,GetAudioInternal进......
  • Token cache serialization Azure AD
    ModernauthenticationwithAzureADforWinForms(native)apps(cmatskas.com)Atthispointeverythingshouldresolvefineapartfromthe'TokenCacheHelper'.T......