暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

达梦数据库查看并清除内存中的SQL执行计划

原创 LeeWen2020 2021-12-19
4518

前言

   在遇到SQL语句性能问题时,应用业务模块功能所执行的SQL很慢,而将对应SQL语句拿出来在DM管理工具或者disql工具中执行很快并且查看工具里面SQL执行计划也正常,这时需要检查确认数据库内存中缓存的执行计划是否正确。

操作方法

1、查看对应SQL语句在内存中的执行计划的CACHE_ITEM(CACHE项的地址)

以SQL语句Select count(*) from TAB1 WHERE OWNER='CTISYS';为例。

查询SQL在内存中的执行计划,如下:

select cache_item,sqlstr from v$cachepln where sqlstr like '%CTISYS%';

或者

select a.cache_item,a.sqlstr 
from v$cachepln a,dba_objects b 
where a.sqlstr like '%CTISYS%'
and a.tableid like '%'||b.object_id||'%'
and b.object_name='TAB1'
and b.object_type='TABLE'; 

V$CACHEPLN 视图记录了SQL语句在内存中的执行计划信息,包括SQL语句涉及到的表个数、表ID、SQL语句内容、语句绑定变量参数的个数等。

image-20211219182521209

2、根据查询出的对应SQL语句的CACHE_ITEM,将执行计划dump到文件便于查看

alter session set events 'immediate trace name plndump level 140485191235648,dump_file ''/home/dmdba/sql_01_pln.txt''';

image-20211219182257628

3、如果发现当前内存中的执行计划存在问题,则可以将该计划清理掉

清理语句如下:

SP_CLEAR_PLAN_CACHE(140485191235648);

image-20211219182619057

可以观察到,cache_item为140485191235648的执行计划已经被清理出内存了。

更多资讯请上达梦技术社区了解:https://eco.dameng.com

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论