达梦ET工具的使用
达梦ET工具的使用
引言
ET 工具是 DM 数据库自带的 SQL 性能分析工具,能够统计 SQL 语句执行过程中每个操作符的实际开销,为 SQL 优化提供依据以及指导。本文简述ET工具的使用方式。
使用方法
功能的开启/关闭
ET 功能默认关闭,可通过配置 INI 参数中的 ENABLE_MONITOR=1、MONITOR_SQL_EXEC=1 开启该功能。
--两个参数均为动态参数,可直接调用系统函数进行修改
SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);
SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',1);
--会话级别修改只在当前会话生效
SF_SET_SESSION_PARA_VALUE('MONITOR_SQL_EXEC',1);
--关闭 ET
SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',0);
SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',0);
ET 功能的开启将对数据库整体性能造成一定影响,优化工作结束后尽量关闭该功能以提升数据库整体运行效率;
DM管理工具使用ET
开启会话级别的ET功能
SF_SET_SESSION_PARA_VALUE('MONITOR_SQL_EXEC',1);
执行 SQL 语句后,客户端会返回 SQL 语句的执行号。单击执行号即可查看 SQL 语句对应的 ET 结果
如果没有图形界面,调用存储过程可返回相同结果。
CALL ET(1262);
ET返回的结果说明:
- OP: 操作符
- TIME(us): 时间开销,单位为微秒
- PERCENT: 执行时间占总时间百分比
- RANK: 执行时间耗时排序
- SEQ: 执行计划节点号
- N_ENTER: 进入次数
Disql环境使用ET
登录disql,开启会话级别的ET功能
SF_SET_SESSION_PARA_VALUE(‘MONITOR_SQL_EXEC’,1);
调用存储过程返回结果
使用ET报错-5505
创建一个对测试表有读权限,还有 public,resource,vti,soi 权限的测试用户
使用ET功能,调用存储过程返回结果失败,报错-5505,没有授予 execute on sys.et 权限
解决方法:
使用 et 过程中的查询 SQL,EXEC_ID 条件为 SQL 执行 ID,可以在没有权限的情况下查看执行计划代价
SELECT
NAME AS "OP",
TIME_USED AS "TIME(US)",
CAST(TIME_USED * 100.0/SUM(TIME_USED) OVER() AS DEC(10, 2)) || '%' AS "PERCENT",
RANK() OVER (ORDER BY TIME_USED DESC) AS "RANK",
SEQ_NO AS "SEQ",
N_ENTER AS "N_ENTER",
MEM_USED AS "MEM_USED(KB)",
DISK_USED AS "DISK_USED(KB)",
HASH_USED_CELLS AS "HASH_USED_CELLS",
HASH_CONFLICT AS "HASH_CONFLICT",
DHASH3_USED_CELLS AS "DHASH3_USED_CELLS",
DHASH3_CONFLICT AS "DHASH3_CONFLICT" FROM
V$SQL_NODE_HISTORY A,
V$SQL_NODE_NAME B WHERE
A.TYPE$ = B.TYPE$ AND EXEC_ID = <SQL执行ID> AND TIME_USED > 0 ORDER BY 2;
实战用例
创建测试表和数据
CREATE TABLE user_logs (
log_id INT PRIMARY KEY,
user_id INT,
action_content VARCHAR(500),
create_time DATETIME
);
INSERT INTO user_logs SELECT LEVEL, MOD(LEVEL,1000), ‘操作日志’||LEVEL, SYSDATE-LEVEL
FROM DUAL CONNECT BY LEVEL <= 1000000;
开启会话级别的ET功能
SF_SET_SESSION_PARA_VALUE(‘MONITOR_SQL_EXEC’,1);
执行查询,从ET可以看出耗时主要集中在表扫,考虑建索引进行优化
建索引并更新统计信息
CREATE INDEX idx_content_pos ON user_logs(POSITION(‘系统错误’, action_content));
查看执行计划
查看ET,走索引返回的结果集小了,耗时也就减少了。
更多详细资料可前往达梦社区:https://eco.dameng.com