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

快速定位达梦缓存的执行计划并清理

开发告诉你一个sql慢,你想看看缓存中执行计划时,怎么精准快速定位?

可能一般人通过文本内容模糊搜索

select cache_item, substr(sqlstr,1,60)stmt from v$cachepln where sqlstr like '%YOUR SQL STRING%'; 

在这里插入图片描述
搜出来的内容比较多,研究一下执行计划缓存表
在这里插入图片描述
要快一点的技巧是增加几个条件,如:执行用户、表数量、列数量(最外层)
在这里插入图片描述
在这里插入图片描述
加上些已知条件剩余的就少了一些

select cache_item, substr(sqlstr,1,60)stmt from v$cachepln where sqlstr like '%from t1%' and n_table=1 and n_cols=1; 

在这里插入图片描述
定位到想要的sql后,下一步看看缓存的执行计划

alter session set events 'immediate trace name plndump level &id, dump_file ''/home/dmdba/dump_plan_&id..log''';

在这里插入图片描述
看输出内容 cat dump_plan_140726259863656.log
在这里插入图片描述
与实际的计划比较
在这里插入图片描述
一样一样的。

不一样怎么办?
有可能(我是说有可能)通过jdbc执行走旧的执行计划,而通过disql执行走新的执行计划。

方法一:通常是清理掉缓存中的计划

call sp_clear_plan_cache(pln号)---不加 pln 就是清理所有 sql 缓存

在这里插入图片描述

清理后会重新生成。
在这里插入图片描述
方法二:还可以通过对表加注释comment,触发ddl使得重新生成执行计划(有点儿眼熟)
在这里插入图片描述
方法三:实在不行就重启实例。

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

相关文章:

  • 基于大疆行业无人机的特色解决方案-无线通信篇:基于蜂窝以及自组网MESH的无线通信C2链路
  • Web3实战:从零开发你的ERC20代币合约
  • 在 master 分支上进行了 commit 但还没有 push,怎么安全地切到新分支并保留这些更改
  • 使用 LangChain + Higress + Elasticsearch 构建 RAG 应用
  • WebRTC服务器Coturn服务器中的通信协议
  • 进阶篇 第 2 篇:自相关性深度解析 - ACF 与 PACF 图完全指南
  • 云原生--基础篇-3--云原生概述(云、原生、云计算、核心组成、核心特点)
  • 2025.04.22【Sankey】流图分析技巧与应用
  • 设备制造行业如何避免项目管理混乱?
  • 【人脸识别】百度人脸识别H5方案对接
  • 表格识别版面还原分析-GO语言集成-表格文字识别接口
  • AutoJs相关学习
  • 国家自然科学基金答辩ppt制作案例模板下载
  • jsconfig.json文件的作用
  • 优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论
  • Android Studio开发 SharedPreferences 详解
  • 联易融受邀参加上海审计局金融审计处专题交流座谈
  • Linux进程6-alarm闹钟定时终止、raise发送信号、abort终止、pause挂起进程验证
  • Jenkins的地位和作用
  • Nginx:支持 HTTPS
  • SQL Tuning Advisor
  • [OpenGL] Lambertian材质漫反射BRDF方程的解释与推导
  • Spark-Streaming简介和核心编程
  • 发布一个npm包,更新包,删除包
  • Python基础知识语法归纳总结(数据类型-2)
  • 开源QML控件:进度条滑动控件(含源码下载链接)
  • 【Ansible】批量管理 Windows自动化运维
  • GTS-400 系列运动控制器板(六)----修改编码器计数方向
  • UML 状态图:以共享汽车系统状态图为例
  • 全面介绍AVFilter 的添加和使用