当前位置: 首页 > article >正文

达梦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返回的结果说明:

  1. OP: 操作符
  2. TIME(us): 时间开销,单位为微秒
  3. PERCENT: 执行时间占总时间百分比
  4. RANK: 执行时间耗时排序
  5. SEQ: 执行计划节点号
  6. 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


http://www.kler.cn/a/556208.html

相关文章:

  • Python爬虫基础文件操作
  • Grok 3 开源体验与访问指南
  • 分布式与集群,二者区别是什么?
  • 推荐一个github star45k+进阶的java项目及知识的网站
  • html - - - - - modal弹窗出现时,页面怎么能限制滚动
  • 处理器架构、单片机、芯片、光刻机之间的关系
  • Flutter开发的应用页面非常多时如何高效管理路由
  • vue2和vue3的按需引入的详细对比通俗易懂
  • 《DeepSeek量化炒股入门到精通》
  • 51c自动驾驶~合集51
  • 如何在 SpringBoot 项目使用 Redis 的 Pipeline 功能
  • 删除hive用户后该用户创建的表权限问题及修复
  • 策略模式Spring框架下开发实例
  • 基于Java实现宠物领养救助交流平台设计和实现
  • Ubuntu编译jetlinks-ui-vue
  • S7-1200的三种启动模式
  • 覆盖从供应、生产、销售到运营的全过程,引领行业数智化转型新方向的智慧快消开源了
  • 通俗易懂的DOM事件模型指南
  • 算法——Boyer-Moore算法
  • 什么容错性以及Spark Streaming如何保证容错性