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

达梦数据库获取SQL真实执行计划

原创 LeeWen2020 2022-06-22
1863

达梦数据库中直接“explain SQL语句”获得的执行计划是估算的执行计划,有可能与真实执行计划存在差别。在达梦数据库中可以通过如下方法获取真实执行计划:
方法一:在disql工具中使用set autotrace trace获取SQL实际的执行计划

C:\dmdbms_270\bin>disql disql V8 用户名: 密码: 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 17.999(ms) SQL> SQL> SET AUTOTRACE TRACE ---开启autotrace SQL> sf_set_session_para_value('MONITOR_SQL_EXEC',1); ---SQL执行监控用于ET工具获取每个操作的耗时 DMSQL 过程已成功完成 已用时间: 0.345(毫秒). 执行号:1001. SQL> SELECT COUNT(*) FROM TAB_COUNT_DM; 行号 COUNT(*) ---------- -------------------- 1 13 1 #NSET2: [1, 1->1, 0] 2 #PRJT2: [1, 1->1, 0]; exp_num(1), is_atom(FALSE) 3 #FAGR2: [1, 1, 0]; sfun_num(1), 已用时间: 3.254(毫秒). 执行号:1002. SQL> et(1002); 行号 OP TIME(US) PERCENT RANK SEQ N_ENTER ---------- ----- -------------------- ------- -------------------- ----------- ----------- 1 PRJT2 3 0.93% 3 2 4 2 DLCK 3 0.93% 3 0 2 3 NSET2 57 17.7% 2 1 3 4 FAGR2 259 80.43% 1 3 2 已用时间: 6.552(毫秒). 执行号:1003.

方法二、dump内存中执行计划缓存到文本文件

---step 1 ---查出对应SQL语句的执行计划缓存item select cache_item from v$cachepln where sqlstr like 'select * from t1 where id%'; ---step 2 ---根据cache_item,dump指定的执行计划缓存,假如step 1中查询结果为123123213 alter session set events 'immediate trace name plndump level 123123213,dump_file ''/home/dmdba/sql111.log''';

两种方法区别:
方法一,需要等待SQL语句执行完成才会打印执行计划;
方法二,在语句解析生成执行计划后就可以查询到;

DM 武汉达梦数据库股份有限公司
24小时免费服务热线:400 991 6599
达梦在线服务平台:https://eco.dameng.com

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

评论