ET 是达梦数据库内置的SQL性能优化分析工具,它可以统计指定会话ID执行的SQL的所有操作符的执行时间,对于分析优化SQL提供比较直观的数据依据,对于达梦数据库SQL优化,ET的使用是必须要掌握的技能之一。
达梦数据库ET功能默认是关闭,需设置INI参ENABLE_MONITOR=1、 MONITOR_TIME=1 和MONITOR_SQL_EXEC=1。达梦数据库参数配置方法参考以下操作演示ET开启配置方法及使用方法。
1.查看ET相关参数及其值| SQL> select para_name,para_value,para_type from v$dm_ini where para_name in ('ENABLE_MONITOR','MONITOR_TIME','MONITOR_SQL_EXEC') |
| SQL> SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1); #开启监视 SQL> SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',1); #监视SQL执行 SQL> SP_SET_PARA_VALUE(1,'MONITOR_TIME',1); #监视时间 |
此时ET功能已经开启完成,调用以下过程可关闭。
| SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',0); SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',0); SP_SET_PARA_VALUE(1,'MONITOR_TIME',0); |
ET 的语法定义为:ET(ID_IN INT),ID_IN指SQL语句的执行ID,如下执行
| SELECt D.* FROM DMTEST.EMPLOYEES E, DMTEST.DEPT_EMP D WHERe D.EMP_NO = E.EMP_NO LIMIT 10; |
语句的执行号为3105,可以通过ET(3105)的方式调用ET来显示该条SQL各个操作的具体执行时间及所占总时间的比例,以便提出针对性的优化。
ET结果中每个列的具体含义:
| 列名 | 说明 |
| OP | 操作符名称 |
| TIME(US) | 执行耗时,以微秒为单位 |
| PERCENT RANK | 在整个计划中用时占比 |
| SEQ | 计划中的序号 |
| N_ENTER | 操作符进入的次数 |
也可以不用配置开启ET功能,通过SQL语句直接来查询ID为3105的SQL每个操作步骤具体执行的时间。如下所示,使用SQL来查询以上SQL(ID为3105,跟ET调用的ID一样的SQL)执行的每个操作花费的时间。
| SELECt N.NAME, TIME_USED, N_ENTER FROM V$SQL_NODE_NAME N, V$SQL_NODE_HISTORY H WHERe N.TYPE$ = H.TYPE$ AND EXEC_ID = 3105 |
如下所示,执行SQL:
执行SQL返回结果后,点击消息对话框,再点击执行号,可弹出ET结果对话框。
注意:
- ET功能的开启是需要消耗一定的数据库性能,如果系统整体性能比较繁忙,建议在使用ET完成SQL优化后,关闭ET功能;
- 在ET中,如果某些操作没有真正执行或者执行时间耗时非常短,则不会在结果中显示。
达梦学习社区地址:https://eco.dameng.com



