达梦 8 查看执行计划常用的三种方式

1 三种常用的查看执行计划的方式概览

方式一:通过 DM 数据库配套管理工具查看。

方式二:使用 explain 命令查看。

方式三:使用disql 的set autotrace

2  管理工具查看执行计划

在 DM 配套管理工具中,选中待查看执行计划的 SQL 语句,点击工具栏中的按钮,或使用快捷键 F9,即可查看执行计划。

例如:选中以下SQL,点击图中的序号2按钮即可。需要注意的是这里调用的是explain命令预估的执行计划,并没有真正的执行SQL。

3 使用 explain 命令查看执行计划

在待查看执行计划的 SQL 语句前加 explain 执行 SQL 语句即可查看预估的执行计划:

explain select * from sysobjects;

1   #NSET2: [1, 1115, 397] 
2     #PRJT2: [1, 1115, 397]; exp_num(17), is_atom(FALSE) 
3       #CSCN2: [1, 1115, 397]; SYSINDEXSYSOBJECTS(SYSOBJECTS as SYSOBJECTS); btr_scan(1)

已用时间: 1.199(毫秒). 执行号:0.

4 使用 disql 命令行set autotrace 查真实执行计划

语法:

SET AUTOTRACE <OFF(缺省值) | NL | INDEX | ON | TRACE | TRACEONLY>

当 SET AUTOTRACE OFF 时,停止 AUTOTRACE 功能,常规执行语句。

当 SET AUTOTRACE NL 时,开启 AUTOTRACE 功能,不执行语句,如果执行计划中有嵌套循环操作,那么打印 NEST LOOP 相关操作符的内容。

当 SET AUTOTRACE INDEX(或者 ON)时,开启 AUTOTRACE 功能,不执行语句,如果有表扫描,那么打印执行计划中表扫描的方式、表名和索引。

当 SET AUTOTRACE TRACE 时,开启 AUTOTRACE 功能,执行语句,打印执行计划,并展示执行过程中的部分监控信息;需要设置 INI 中监控参数 ENABLE_MONITOR、MONITOR_SQL_EXEC、ENABLE_MONITOR_DMSQL 均为开启(即等于 1 时)才有实际意义。此功能与服务器 EXPLAIN 语句的区别在于,EXPLAIN 只生成执行计划,并不会真正执行 SQL 语句,因此产生的执行计划有可能不准;而通过 TRACE 获得的执行计划,是服务器实际执行的计划(可能是重用了计划缓存中计划,也可能是新生成的计划)。

当 SET AUTOTRACE TRACEONLY 时,开启 AUTOTRACE 功能,执行语句,打印执行计划,并展示执行过程中的部分监控信息;需要设置 INI 参数 ENABLE_MONITOR、MONITOR_SQL_EXEC、ENABLE_MONITOR_DMSQL 均为开启(即等于 1 时)才有实际意义。但是用完之后,需要关闭。此功能与 TRACE 区别在于对于查询语句集不打印结果集。

示例:

SQL> set autotrace traceonly
SQL> select * from sysobjects;
1115 rows got
1   #NSET2: [1, 1115, 397] 
2     #PRJT2: [1, 1115, 397]; exp_num(17), is_atom(FALSE) 
3       #CSCN2: [1, 1115, 397]; SYSINDEXSYSOBJECTS(SYSOBJECTS); btr_scan(1)

Statistics
-----------------------------------------------------------------
        0           data pages changed
        0           undo pages changed
        70          logical reads
        0           physical reads
        0           redo size
        163936      bytes sent to client
        154         bytes received from client
        2           roundtrips to/from client
        0           sorts (memory)
        0           sorts (disk)
        0           rows processed
        0           io wait time(ms)
        2           exec time(ms)

已

注:重点关注 logical reads(逻辑读)和 physical reads(物理读)相应的指标值,并结合 rows processed 返回处理行数多少来分析。如果返回行数少(并且 bytes sent to client 总量不大),应尽可能减少 IO 开销,让执行计划选择正确的索引路径。

具体详情请参考:

DIsql 环境变量设置 | 达梦技术文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值