文章目录
- 一、查询优化概述
- 二、优化的基本思路
- 2.1 语义优化-内容等价性
- 2.2 语义优化-语法等价性
- 2.3 执行优化(物理层优化)
- 2.4 优化在整个DBMS的位置
- 三、逻辑查询优化
- 3.1 逻辑优化整体思路
- 3.2 关系代数操作次序交换的等价性
- 定理1 连接&连接 积&积 交换律
- 定理2 连接&连接 积&积 结合律
- 定理3 投影串接律
- 定理4 选择串接律
- 定理5 选择和投影交换律
- 定理6 选择和积的交换律
- 定理7 投影和积的交换律
- 定理8 选择和并的交换律
- 定理9 选择和差的交换律
- 定理10 投影和并的交换律
- 定理的运用
- 3.3 关系代数优化的示例
- 四、物理查询优化
- 4.1 为什么需要物理查询优化?
- 4.2 物理优化的整体思路
- 4.3 物理计划优化的评价标准
- 4.3.2 如何获取评价指标
- 4.3.3 代价评估
一、查询优化概述
较少IO次数、内存消耗
谓词下推
三个层面进行优化:
- 语义优化:模型的语义以及完整性规则,优化查询
- 语义优化–逻辑层优化:利用语法结构,优化操作执行顺序
- 语义优化–物理层优化:存取路径&执行算法的选择与执行次序优化
二、优化的基本思路
2.1 语义优化-内容等价性
2.2 语义优化-语法等价性
更可能早的做选择 、投影 运算
2.3 执行优化(物理层优化)
2.4 优化在整个DBMS的位置
三、逻辑查询优化
3.1 逻辑优化整体思路
- 早做选择和投影,让中间结果变小,节省巨大的执行时间
- 选择&投影串接起来,一次IO ,选择投影全部执行完
- 投影&前后的二元运算(两个关系式的并交叉)结合起来,IO时去掉一些无关的属性,避免多次扫
- 选择&前的笛卡尔积合并成一个连接
- 执行连接运算前对关系做适当的预处理:排序、临时index
- 找出表达式里的公共字表达式,共用一个子表达式结果
3.2 关系代数操作次序交换的等价性
并 差 积 选择 投影
定理1 连接&连接 积&积 交换律
定理2 连接&连接 积&积 结合律
定理3 投影串接律
定理4 选择串接律
定理5 选择和投影交换律
定理6 选择和积的交换律
定理7 投影和积的交换律
定理8 选择和并的交换律
定理9 选择和差的交换律
定理10 投影和并的交换律
在执行差的时候,需要比对全部的col,而不是选择的那几个col
定理的运用
3.3 关系代数优化的示例
四、物理查询优化
4.1 为什么需要物理查询优化?
4.2 物理优化的整体思路
4.3 物理计划优化的评价标准
- IO次数
- CPU占用
- 内存使用代价
- 中间结果存储代价
- 计算量(搜索 合并 排序 字段值计算等)
- 网络通讯量
4.3.2 如何获取评价指标
- 不会自动收集,需要DBA用特定命令完成信息统计,并把结果存入系统目录中的实用程序
- 随着表更新修改,DBMS会定时更新系统信息