当前位置: 首页 > news >正文

关于Oracle LATCH:LIBRARY CACHE

LIBRARY CACHE管理着和CURSOR相关的所有信息区域,LIBRARY CACHE的效率直接决定着CURSOR的执行效率。实践表明,与SHARED POOL相关的性能问题往往是和LIBRARY CACHE相关的。所以我们有必要详细地研究LIBRARY CACHE结构,因为通过研究它的结构,可以为我们优化LIBRARY CACHE提供思路。
SHARED POOL的内存由KGH(Kernel Generic Heap)管理,LIBRARY CACHE则由KGL(Kernel Generic Library Cache)管理,KGL利用KGH分配得到必要的内存CHUNK。图8-21为LIBRARY CACHE的内存结构。
LIBRARY CACHE LATCH主要用于保护检索并管理LIBRARY CACHE。SQL文本经过Oracle内部的HASH函数生成一个HASH值,然后根据HASH值检索LIBRARY CACHE是否存在相同的SQL,在此过程中需要获得LIBRARY CACHE LATCH。如果不存在相同的SQL则将SQL文本分配到适当的BUCKET上。具有相同HASH值的SQL以HANDLE为单位,以CHAIN的形式挂载到同一个BUCKET中。一个HANDLE管理着一个Library Cache Object(以下简称LCO)。HANDLE对实际的LCO起到指针作用。LCO保存着SQL的实际信息。其中BUCKET主要由LIBRARY CACHE LATCH保护;HANDLE由LIBRARY CACHE LOCK保护;LCO由LIBRARY CACHE PIN保护。LIBRARY CACHE LATCH的数量默认与大于CPU数量的最小质数值相同。如下所示:

SQL> show parameter cpu_countNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cpu_count                            integer     64
SQL> select count(*) from v$latch_children where name='library cache';COUNT(*)
----------67

另外,LIBRARY CACHE LATCH的数量受隐含参数_kgl_latch_count影响,LIBRARY CACHE BUCKETS受隐含参数_kgl_bucket_count影响。和CACHE BUFFERS CHAINS LATCH类似,一个LIBRARY CACHE LATCH也管理着多个LIBRARY CACHE BUCKETS。
提示 LIBRARY CACHE中BUCKET的作用(管理着相同HASH值的CURSOR信息)和BUFFER CACHE BUCKET(管理着相同HASH值的DBA数据块)类似,但和SHARED POOL中管理CHUNK的BUCKET完全不同。读者需要仔细的区别。
如果在申请LIBRARY CACHE LATCH过程中发生争用,则会发生LATCH: LIBRARY CACHE等待事件。

根据实践, LIBRARY CACHE LATCH发生争用时,并不是LIBRARY CACHE LATCH数量不够,而是局部的LIBRARY CACHE LATCH访问比较厉害。所以设置隐含参数_kgl_latch_count增加其数量往往不能缓减LIBRARY CACHE LATCH争用。

相关文章:

  • 【Vue Vapor Mode :技术突破与性能优化的可能性】
  • 《棒球特长生》棒球升学途径·棒球1号位
  • 深度学习能取代机器学习吗?
  • 给定数组 nums,判断是否存在三个元素 a, b, c 使得 a + b + c = 0。
  • 基于vue框架的动物园饲养管理系统a7s60(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 四足机器人环境监测系统相关问题
  • 鸿蒙OSUniApp 实现登录状态管理与持久化#三方框架 #Uniapp
  • 深度学习常用概念详解:从生活理解到技术原理
  • 调不好分布式锁?HarmonyOS + Redis 分布式锁失效排查全路径
  • 32.第二阶段x64游戏实战-封包-公共call
  • [yolov11改进系列]基于yolov11引入感受野注意力卷积RFAConv的python源码+训练源码
  • 【刷题】数组拼接(超聚变暑期实习笔试)
  • GitCode镜像仓库批量下载开发实录
  • 一,关键字class和typename的区别
  • 线代第四章线性方程组第二节:线性方程组有解判断
  • 模型协同构建智能流程体
  • linux kernel 内存回收水位线调整方法
  • 《独立开发工具 • 半月刊》 第 003 期
  • java每日精进 5.27【分布式锁】
  • [网页五子棋][用户模块]客户端开发(登录功能和注册功能)
  • 临城网站建设/培训学校管理系统
  • php网站只能打开首页/2345网止导航
  • 网站制作要素/app地推接单平台有哪些
  • 免费自制ppt软件/免费seo网站
  • 做网站实例/长春网站建设团队
  • 西安大网站建设公司排名/淘宝关键词排名是怎么做的