排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
举报
首页
/
[CMU 15-445] 14 Query Planning & Optimization - Part Ⅰ
[CMU 15-445] 14 Query Planning & Optimization - Part Ⅰ
分布式数据管理
2021-10-19
497
1. Overview
SQL作为声明式语句,不透露查询的具体实现细节。DBMS首先解析SQL语句得到逻辑计划,随后优化逻辑计划,最后为逻辑计划中的每个算子选择效率最高的物理执行方式,即物理查询计划。逻辑计划优化和物理计划优化统称为查询优化,决定了SQL语句的最终执行效率。
最早的查询优化工作起源于70年代System R,其中的许多概念和技术沿用至今
查询优化的方法总体可分为两类,分别是基于规则的启发式方法和基于查询代价预估的方法。第一种方法最多只需要检查catalog目录粗粒度地避免查询中的无用工作;第二种则需要检查实际数据大小、索引等,对每种执行方式代价进行预估后选择代价最小查询计划的去执行。
围绕查询优化,本节主要介绍关系代数等价、查询计划估计、查询计划枚举以及子查询优化。
查询优化的整体流程如下图所示,主要有SQL重写(可选)、SQL解析、字段-Internal ID映射、根据schema重写查询树(可选)、逻辑/物理计划优化几个步骤。
为了生成开销最低的物理查询计划,查询优化器需要根据逻辑计划以及当前物理存储情况(tuple规模、索引大小)生成。
查询优化是一个NP-Hard问题,可选的执行可能很多,导致搜索范围很广,查询优化器需要在很短的时间内寻找到相对最优的解法。
2. Relational Algebra Equivalences
若两个关系代数表达式所产生的元组相同,那么这两个关系表达式就是等价的。DBMS系统最开始可以不通过代价估算来优化查询计划,即首先重写低效率的SQL语句。
例如下面的例子,将过滤算子往查询树的根部移动,提前过滤掉部分tuple,降低后续连接算子的代价。
对于SELECT算子,优化过程中尽可能早的过滤掉不满足条件的tuple,提高后续算子的运行效率。同时,简化也要注意精简表达式。
投影算子与查询算子类似,尽可能提前执行投影算子。
其他例子,例如对于结果不变的判断语句(恒定TRUE or FALSE),避免逐一扫描tuple,优化器直接将判断语句删除。
在下面稍微复杂一点的查询中,处理方式也是一样。
SQL语句避免对相同内容重复查询。
多表间不同的连接顺序也将带来不同处理开销,另外,如何在大范围搜索空间中快速确定相对最优的连接顺序也是优化器需要解决的问题。
3. Cost Estimation
查询优化过程中需要预估每种查询计划的开销,最终选择开销最低的执行方式。预估代价时需要考虑的点包括硬件资源占用、处理的tuple数目等。
DBMS会建立数据表、索引等内容的统计信息(放在catalog中),用于预估开销时候使用。
数据库
文章转载自
分布式数据管理
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨