达梦数据库内置ET性能分析工具,ET工具可以根据SQL语句执行号输出对应SQL语句执行步骤的耗时情况并进行排序展示,可以为数据库管理员和开发人员提供SQL优化方向。
达梦数据库ET功能默认是关闭,需设置INI参ENABLE_MONITOR=1、 MONITOR_TIME=1 和MONITOR_SQL_EXEC=1。
简单说明
定义:
ET(ID_IN INT);
功能说明:
统计执行ID为ID_IN的所有操作符的执行时间。ID_IN为SQL语句执行号。
需设置INI参ENABLE_MONITOR=1、 MONITOR_TIME=1 和MONITOR_SQL_EXEC=1。
示例
SQL> SET AUTOTRACE TRACE
SQL> sf_set_session_para_value('MONITOR_SQL_EXEC',1); ---会话级别设置MONITOR_SQL_EXEC,只对当前会话生效
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
OP:表示操作符名称。(如果某些操作符并没有真正执行或者耗时很短,则不会在ET中显示。DLCK操作符是对字典对象的上锁处理,通常情况下可以忽略)
TIME(US):对应操作符的执行耗时,单位微秒。
PERCENT:对应操作符在整个执行计划中耗时占比。
SEQ:操作符在执行计划中的序号。
N_ENTER:操作符进入的次数。
ET工具的输出内容,也可以使用SQL语句来实现,主要涉及到的系统视图:v$sql_node_name、v$sql_node_history。
达梦在线服务平台:https://eco.dameng.com