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

Library cache lock常见案例分析(二)

Library cache lock常见案例分析(二)

  • 原因:RAC环境中SQL未共享
    • 解决方案:重写SQL以使用绑定变量
    • 解决方案:使用CURSOR_SHARING参数
  • 原因:行级别触发器过度使用
    • 解决方案:评估行触发器的必要性
  • 原因:子游标的数量过多
    • 解决方案:参数CURSOR_SHARING被不适当地设置为SIMILAR

库缓存锁通过在对象句柄上获取锁来控制库缓存客户端之间的并发,其作用主要有以下两种:

  • 一个客户端可以阻止其他客户端访问同一个对象。
  • 客户端可以长期维持一种依赖关系(此时其他客户端无法对该对象进行修改)。

此外,在库缓存中定位某个对象的操作过程中也会获取该锁(首先获取库缓存child latch以扫描句柄列表,找到对象后,再在该对象的句柄上放置此锁)。

下面两个工具可以协助排查库缓存锁等待问题:

  • TKProf:非递归语句与递归语句的总体等待事件汇总显示,库缓存锁等待占用了大量时间。
  • AWR或者statspack:严重的库缓存锁等待。

TKProf是Oracle数据库官方提供的核心性能诊断工具,主要用于分析数据库后台生成的SQL Trace(SQL 跟踪文件),将原始、杂乱的跟踪日志转换为结构化、可读性强的报告,帮助数据库管理员(DBA)和开发人员定位SQL语句的性能瓶颈(如执行效率低、资源消耗过高的SQL)。

⭐️ 出现Library cache lock等待事件的常见原因可以分为如下几类:

  • 未共享的SQL文本
  • 共享SQL被淘汰出内存
  • 失效的库缓存对象
  • 对象被其他会话编译中
  • 审计开启导致
  • RAC环境中SQL未共享
  • 行级别触发器过度使用
  • 子游标的数量过多

http://www.xdnf.cn/news/1415071.html

相关文章:

  • 技能补全之Python操作MongoDB
  • 基于FOA与BP神经网络分类模型的特征选择方法研究(Python实现)
  • 订单后台管理系统-day05用户模块查看与删除
  • Kubernetes 存储
  • 【语法】C++的异常
  • IIC接口的mpu6050六轴模块(8针脚)引脚使用说明
  • Java中的异常,枚举,泛型,代理
  • 单表查询-group by rollup优化
  • 责任链模式实践-开放银行数据保护及合规
  • 一键获取电商平台商品原数据:item_get_app接口实操讲解
  • [Plecs基础知识系列]建立自定义模块/子系统(Subsystem)
  • 基于路测点云标注生成OpenDrive地图的全流程解析
  • 微服务01
  • Spring Cloud Alibaba Seata 分布式事务(六)
  • 索引性能分析
  • 【开题答辩全过程】以 基于SSM的拾光咖啡厅管理系统的设计与实现为例,包含答辩的问题和答案
  • Nano Banana:下一代AI图像创作与编辑指南
  • Linux网络编程04:网络基础(万字图文解析)
  • AFSIM仿真脚本生成(三)脚本解析技术加速验证过程
  • 有关指针的认知盲区:指针大小,决定因素,指针变量
  • EtherCAT主站IGH-- 44 -- IGH之slave_config.h/c文件解析
  • 目标检测算法YOLOv4详解
  • Langchain指南-关键特性:使用聊天模型调用工具
  • 用 MATLAB 实现遗传算法求解一元函数极值:从代码到实践
  • STL常见容器介绍
  • 从RNN到Transformer
  • @Transactional如何对分布式事务生效
  • Redis实现短信登录
  • 需要固定一个指针,再遍历另一个指针的都可以用双指针方法
  • 【系列11】端侧AI:构建与部署高效的本地化AI模型 第10章:LLM端侧部署