注册
达梦sql执行计划学习记录
专栏/培训园地/ 文章详情 /

达梦sql执行计划学习记录

刘东晟 2025/03/27 26 0 0
摘要

一、执行计划核心机制

1.生成原理
查询优化器基于代价模型,分析数据分布统计信息、表索引特征及硬件资源,生成多种候选执行计划,选择代价最小的作为最终计划。
支持自适应机制(OPTIMIZER_MODE=1时),复杂子查询节点会生成备用计划,运行时根据实际数据选择最优路径。

2.查看方式
基础查看:EXPLAIN SELECT...显示树形执行计划
增强查看:EXPLAIN FOR SELECT...以结果集形式输出,含分区信息、索引建议等
实时跟踪(需开启统计参数):
SET AUTOTRACE TRACEONLY; -- 执行SQL并显示计划及统计

二、执行计划组成要素

1.关键操作符:
CSCN2:聚集索引全扫描
SSEK2:二级索引范围扫描
NEST LOOP JOIN2:嵌套循环连接
HASH2 JOIN:哈希连接
AAGR2:基于排序的聚合计算
MPP COLLECT:分布式数据收集节点

2.代价标识
示例:[0, 16, 9]表示:
估算代价:0级
处理行数:16行
行均字节:9字节

三、执行计划分析维度

1.数据访问路径优化
全表扫描 vs 索引选择
BLKUP2操作符出现表示需要回表,可通过覆盖索引优化

2.连接策略选择
10万级以下数据量优先NESTED LOOP
大数据量优先HASH JOIN
分布式场景采用MPP GATHER/DISTRIBUTE策略

3.分布式计划特征
计划中会出现MPP COLLECT/MPP GATHER等分布式操作符
支持动态分区裁剪,通过V$DPC_EXA_INFO可监控子任务执行

四、调优工具与方法

1.统计信息管理
DBMS_STATS.GATHER_TABLE_STATS('SYSDBA','T1'); -- 收集统计信息

2.性能视图:
V$SQL_PLAN:当前缓存的执行计划
V$SQL_NODE_HISTORY:历史执行节点耗时
V$SQL_STAT:SQL执行统计监控

3.HINT强制干预
SELECT /*+ INDEX(T1 IDX_NAME) */ * FROM T1 WHERE ...; -- 强制使用索引

五、特殊场景处理

1.并行查询
参数设置:
ALTER SESSION SET PARALLEL_POLICY=2; -- 手动并行模式
ALTER SESSION SET PARALLEL_THRD_NUM=8; -- 并行线程数
自动并行度根据数据量动态调整

2.结果集重用
通过USE_PLN_POOL参数启用计划缓存
V$CACHEPLN视图查看缓存计划命中率

六、维护
1.定期更新统计信息,避免过时统计导致错误代价估算
2.OLTP系统关注索引有效性,OLAP系统关注连接顺序优化
3.复杂查询使用DBMS_SQLTUNE进行自动SQL调优

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服