【达梦数据库】SQL查询优化


1 查询优化

目标:降低响应速度,提高吞吐量

查询的执行步骤:

npar语法分析->
(计划优化)pha语义分析->phb关系树生成->phc逻辑计划优化->phd物理计划生成->rt运行时计划生成->
(执行优化)vm物理计划执行

1.1 计划优化

1.1.1 查询改写

优化时机:pha/phb。规则优化,常用于视图合并(条件下放)、OR过滤条件转换、子查询

举例:

1) 	where c1 = d1 and d1 = 5 and c1 < 2; 
	->
	where FALSE;
2) 	t1 left join t2
	on t1.c1 = t2.d1
	where t2.d2 < 5
	->
	inner join
3)	t1是基于id列的范围分区, min(id), max(id)
	-> 转换为第一个/最后一个子表的查询;
4)	select c1,c2...
	from t1
	where b1
	order by ... limit 10, 1;	
	->
	where rowid in
	(select rowid from t1 
	where b1 
    order by ... limit 10,1);
1.1.2 代价估算与统计信息

对单表过滤:定位查找、索引扫描

对多表连接:连接顺序、连接方式(哈希连接、归并连接、嵌套循环连接和索引连接)

影响代价的因素:

  • cardinality、byte length(页大小、页数、聚簇因子)
  • 操作符类型
  • 参数配置
  • statistics

2 调优手段

1、问题重现(排除第三方应用、驱动、网络、磁盘)

2、定位

ENABLE_MONITOR、MONITOR_TIME、MONITOR_SQL_EXEC开启时, set autotrace trace

select \* from v$bufferpool ; -- 在待调优语句前后执行以确认有无IO

select \* from v$mtab_used_history;

select \* from v$sort_history;* -- 确认有无刷盘

select \* from v$sql_node_history; -- 查看每个操作符用时, 或者用et()

3、优化手段

  • 建索引、更新统计信息;
  • 增加hint或者修改ini参数,期望得到不同的计划(几十个优化参数的应用);
  • 语句改写,基于应用逻辑;
  • 修改代码,增加新的优化;

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台 (dameng.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值