DM达梦执行计划和ET的查看使用

在学习DM的SQL优化过程中,DM有两个功能能够帮助我们更方地分析SQL语句的执行情况,分别是物理执行计划和ET。所以学会看懂执行计划和ET对于达梦SQL优化是很重要的事情。

关于物理执行计划:

物理执行计划是在经过词法语法语义分析,对得到的逻辑计划进行代价估算选出的“最优”执行计划。

对于如下语句

SELECT * FROM TEST2.TAB;

会有以下物理执行计划:

物理计划是自顶向下驱动,数据自底向上传递的,也就是说,最开始执行的是处于最下端的计划。

物理执行计划中,名称为该计划执行的操作符,代价为执行时间,单位为毫秒,结果集为预估行数,行数据处理长度为每行的字节长。

操作符此处介绍部分常用到的操作符:

NSET: 结果集

PRJT:投影,用于选择表达式的计算

CSCN:基础全表扫描(a),从头到尾,全部扫描

SSCN:二级索引扫描(b),从头到尾,全部扫描

SSEK:二级索引范围扫描(b),通过键值精准定位到范围或者单值

CSEK:聚簇索引范围扫描(c),通过键值精准定位到范围或者单值

BLKUP:通过二级索引的ROWID回原表中取出全部数据(b+a)

SLCT:过滤条件,是对结果集进行过滤

SORT:SORT是做排序操作时使用到的操作符

HAGR:HASH AGR操作,是最基础的分组方式,对于没有优化条件的分组语句,一般都会按这种方式进行分组。

SAGR:SORTED AGR操作,同一分组的数据按照顺序取出。

NEST LOOP INNER JOIN (嵌套循环连接):最基础的连接方式,将一张表的一个值与另一张表所有值拼接,形成一个大结果集,再从大结果集中过滤出满足条件的行。

HASH JOIN (哈希连接):没有索引情况下,大多数连接的处理方式,将一张的连接列做成哈希表,另一张表的数据向这个哈希表匹配,满足条件返回。

INDEX JOIN(索引连接):将一张表的数据拿出,去另一张表上进行范围扫描找出需要的数据行,需要右表连接列上存在索引

MERGE JOIN (归并连接):两张表都扫描索引,按照索引顺序进行归并。

如何查看物理执行计划:

在需要查看执行计划的语句前加上explain关键词,如以上的语句,查看他的执行计划即为:

EXPLAIN SELECT * FROM TEST2.TAB;

也可在manager图形化操作界面在执行完相关语句后,点击如下按钮查看

关于ET:

ET可以显示执行计划各个节点的执行时间,上面例子的ET如下:

其中OP为对应的操作符,time为执行时间,PERCENT为时间占比,rank为时间排行,SEQ为对应执行计划中的第几行

对于需要进行优化的SQL语句,可先查看对应ET看看是哪个语句的执行时间过长,之后再具体分析原因。

如何查看ET

达梦数据库的ET功能默认未开启。启动ET需要设置三个参数:

ENABLE_MONITOR、MONITOR_TIME、MONITOR_SQL_EXEC;

开启ET功能命令:

SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);  

SP_SET_PARA_VALUE(1,'MONITOR_TIME',1);  

SF_SET_SESSION_PARA_VALUE('MONITOR_SQL_EXEC',1);  

在开启ET功能后,执行相关语句后,可在下方的信息栏,看到语句的Execute ID,鼠标直接点击,ET可以显示执行计划各个节点的执行时间,如图:

也可以通过调用存储过程查看:

CALL ET(677);

请上达梦社区了解 https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值