news 2026/5/23 4:10:04

达梦(DM8)执行计划

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
达梦(DM8)执行计划

一、获取执行计划

1.EXPLAIN命令

-- 基本语法 EXPLAIN [EXTENDED] <SQL语句>; -- 示例 EXPLAIN SELECT * FROM T1 WHERE ID = 100;

2.SET AUTOTRACE

-- 开启自动跟踪(在disql中) SET AUTOTRACE ON; -- 显示结果和执行计划 SET AUTOTRACE TRACE; -- 只显示执行计划 SET AUTOTRACE OFF; -- 关闭

3.动态性能视图

-- 查看最近SQL的执行计划 SELECT * FROM V$SQL_PLAN WHERE SQL_ID = '...';

二、执行计划关键元素解读

执行顺序

  • 从右到左,从上到下阅读

  • 最右边的操作最先执行

  • 缩进越深,执行优先级越高

核心操作符解析

操作符含义说明
CSCN全表扫描顺序扫描整个表
SSEK二级索引扫描通过索引定位数据
CSEK聚集索引扫描聚集索引范围扫描
BLKUP回表操作通过索引找到ROWID后回表取数据
NEST LOOP嵌套循环连接适合小表驱动大表
HASH JOIN哈希连接适合大表连接
MERGE JOIN合并连接适合已排序的数据
SORT排序操作注意内存排序和磁盘排序
PRJT投影操作选择要输出的列
SLCT选择操作过滤条件

重要信息字段

  • COST: 预估成本(值越小越好)

  • CARDINALITY: 预估行数

  • BYTES: 预估数据量

  • TIME: 预估时间


三、执行计划分析示例

EXPLAIN SELECT * FROM EMP E JOIN DEPT D ON E.DEPTNO = D.DEPTNO WHERE E.SALARY > 5000;

典型执行计划输出:

OPERATION TABLE COST CARD BYTES ----------------------------------------------- NEST LOOP -- 150 1000 80K -> SSCN EMP 100 200 16K FILTER: SALARY > 5000 -> BLKUP DEPT 50 5 4K -> SSEK DEPT_PK 20 5 4K

解读

  1. 先执行SSCN扫描EMP表,过滤SALARY>5000(成本100)

  2. 对结果集的每一行,通过SSEK使用DEPT_PK索引查找DEPT表

  3. BLKUP回表取DEPT的其他列

  4. NEST LOOP执行连接操作


四、性能问题识别

常见问题及解决方案

问题现象可能原因解决方案
全表扫描(CSCN)无索引或索引失效创建合适索引
回表代价高(BLKUP)索引覆盖不全创建覆盖索引
排序代价大(SORT)内存不足或数据量大增加排序内存或优化SQL
嵌套循环低效驱动表过大考虑HASH JOIN
预估行数偏差大统计信息过时更新统计信息

关键检查点

  1. 索引使用情况:是否使用了合适的索引

  2. 连接方式选择:NEST LOOP/HASH JOIN/MERGE JOIN是否合理

  3. 数据访问路径:全表扫描还是索引扫描

  4. 排序操作:是否必须,能否消除

  5. 预估vs实际:统计信息是否准确


五、优化实践技巧

1.更新统计信息

-- 更新表统计信息 DBMS_STATS.GATHER_TABLE_STATS('SYSDBA', 'T1'); -- 更新索引统计信息 DBMS_STATS.GATHER_INDEX_STATS('SYSDBA', 'IDX_T1');

2.使用Hint引导优化器

/*+USE_HASH(T1 T2)*/ -- 强制使用哈希连接 /*+INDEX(T1 IDX_NAME)*/ -- 强制使用特定索引 /*+NO_INDEX(T1)*/ -- 禁止使用索引

3.分析步骤总结

  1. 定位高成本节点:找到COST最高的操作

  2. 分析访问路径:检查是否缺少索引

  3. 检查连接顺序:驱动表是否合适

  4. 验证统计信息:预估行数是否准确

  5. 考虑重写SQL:改变写法可能获得更好计划


六、实用工具

1.达梦性能监控工具

  • DM Monitor:图形化监控工具

  • DM Performance Analyzer:性能分析工具

2.常用查询

-- 查看表统计信息 SELECT * FROM DBA_TAB_STATISTICS WHERE TABLE_NAME = 'T1'; -- 查看索引信息 SELECT * FROM DBA_INDEXES WHERE TABLE_NAME = 'T1'; -- 查看最近高消耗SQL SELECT * FROM V$SQL_STAT ORDER BY ELAPSED_TIME DESC;

掌握执行计划分析需要结合理论知识和平时的实践积累。建议从简单的SQL开始分析,逐步过渡到复杂查询,同时配合实际性能测试来验证优化效果。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 2:27:12

达梦(DM8)基于 LBS(位置服务)教程

一、环境准备1.1 达梦数据库版本要求达梦数据库 DM8 及以上版本需安装空间数据组件&#xff08;可选&#xff09;1.2 创建测试数据库-- 创建表空间 CREATE TABLESPACE lbs_data DATAFILE lbs_data.dbf SIZE 1024;-- 创建用户 CREATE USER lbs_user IDENTIFIED BY "Lbs_123…

作者头像 李华
网站建设 2026/5/9 2:07:58

小样本AI异常检测:数据不足也能训练,云端GPU按小时计费

小样本AI异常检测&#xff1a;数据不足也能训练&#xff0c;云端GPU按小时计费 1. 为什么需要小样本异常检测&#xff1f; 在金融、医疗、工业等特殊行业&#xff0c;企业常面临一个困境&#xff1a;既想用AI技术检测异常行为&#xff08;如金融欺诈、设备故障、医疗影像异常…

作者头像 李华
网站建设 2026/5/12 23:15:18

没技术背景能用AI侦测吗?保姆级教程,小白1小时上手

没技术背景能用AI侦测吗&#xff1f;保姆级教程&#xff0c;小白1小时上手 1. 为什么店主需要AI监控&#xff1f; 开过店的朋友都知道&#xff0c;防盗是件头疼事。传统监控摄像头只能录像&#xff0c;发现问题时往往为时已晚。而AI监控能实时分析画面&#xff0c;发现异常行…

作者头像 李华
网站建设 2026/5/10 7:48:54

没N卡怎么跑YOLOv8?云端GPU镜像开箱即用,成本透明

没N卡怎么跑YOLOv8&#xff1f;云端GPU镜像开箱即用&#xff0c;成本透明 1. 为什么需要云端GPU跑YOLOv8&#xff1f; YOLOv8作为当前最先进的目标检测模型之一&#xff0c;对计算资源有着较高要求。传统本地运行方式通常需要NVIDIA显卡&#xff08;俗称N卡&#xff09;支持&…

作者头像 李华
网站建设 2026/5/22 17:02:37

AI侦测模型效果调优:云端GPU秒级重启,实验效率提升10倍

AI侦测模型效果调优&#xff1a;云端GPU秒级重启&#xff0c;实验效率提升10倍 1. 为什么我们需要更快的模型调优&#xff1f; 作为一名算法工程师&#xff0c;我深知调参的痛苦。传统本地训练环境每次重启需要20分钟&#xff0c;一天只能测试5组参数。这种低效的工作流程严重…

作者头像 李华
网站建设 2026/5/20 1:39:19

AI赛事视频分析:自动追踪球员动作云端方案

AI赛事视频分析&#xff1a;自动追踪球员动作云端方案 引言&#xff1a;为什么业余球队也需要AI分析&#xff1f; 对于业余足球俱乐部来说&#xff0c;专业体育分析系统动辄数万元的费用让人望而却步。但训练视频中其实藏着大量有价值的数据——球员跑动距离、传球路线、防守…

作者头像 李华