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

打印 上一主题 下一主题

主题 1706|帖子 1706|积分 5118

开发告诉你一个sql慢,你想看看缓存中实行计划时,怎么精准快速定位?
可能一般人通过文本内容模糊搜索
  1. select cache_item, substr(sqlstr,1,60)stmt from v$cachepln where sqlstr like '%YOUR SQL STRING%';
复制代码

搜出来的内容比力多,研究一下实行计划缓存表

要快一点的技巧是增长几个条件,如:实行用户、表数量、列数量(最外层)


加上些已知条件剩余的就少了一些
  1. 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后,下一步看看缓存的实行计划
  1. 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实行走新的实行计划。
方法一:通常是清理掉缓存中的计划
  1. call sp_clear_plan_cache(pln号);---不加 pln 就是清理所有 sql 缓存
复制代码

清理后会重新生成。

方法二:还可以通过对表加解释comment,触发ddl使得重新生成实行计划(有点儿眼熟)

方法三:着实不行就重启实例。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

种地

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表