第3部分:关系数据库管理系统原理part2
作者:互联网
第3部分:关系数据库管理系统原理part2
题型:选择题、填空题、算法题、分析题分值:约35%
第9章:查询执行
-
要求准确掌握基本概念熟练掌握算法的执⾏过程熟练分析算法的I/O代价及算法对内存的要求
查询处理的基本过程
排序的作用
外存归并排序:
-
归并段、外存归并排序算法、算法的I/O代价分析、算法对内存的要求
两趟多路归并算法
-
一趟是创建归并段这里,最多M个块,同时需要排序
-
还有一趟是扫描所有的归并段进行读操作
创建归并段
-
创建少于每个归并段块数少于M的归并段
-
同时注意排序
创建归并段的运行实例
-
创建并排序
多路归并算法
-
扫描所有的归并段,进行归并排序
多路归并算法实例
算法分析
-
注意最后一次归并结果的写入操作不用计入IO代价,因为流水线,写操作可以作为上一次的结果
多趟多路归并算法
双缓冲的概念
-
同时一个归并段内读入两个块,一个块读完了,直接换另一个块中的元组,同时讲下一个块读入空闲的页中
选择操作的执行
-
算法、算法的I/O代价分析、算法对内存的要求
基于扫描的选择算法
-
很朴素的思想,直接二重循环遍历所有的元组找合适的元组
算法分析
-
只需要一块作为遍历的判断即可
基于哈希的选择算法
-
只适用于K=v的形式
算法分析
-
假设均匀分布,这个值占用B/V个页
基于索引的选择算法
-
利用B+树区间查询或者等值查询
算法分析
-
聚簇索引,区间连续分布,直接按页读
-
非聚簇,最差情况一个元组一个页,总元组数才是读的块数
投影操作的执行
算法、算法的I/O代价分析、算法对内存的要求
不带去重的投影算法
-
类似于基于扫描的选择算法
去重操作的算法
-
去重操作、集合操作、聚集操作的执⾏
-
⼀趟算法、基于排序的算法、基于哈希的算法、算法的I/O代价分析、算法对内存的要求
一趟去重算法
-
在缓冲区里面建立M-1页大小的哈希表
运行实例
算法分析
-
M-1块内能存下去重结果
基于排序的去重算法
-
就是排序时候顺便去重
运行实例
算法分析
-
和归并排序一样
基于哈希的去重算法
-
重复元组必然在相同的桶,一个桶内不一定都重复
-
再逐桶去重,取并集
运行实例
算法分析
-
分桶要读,桶满了写回文件,每个桶还要去重
-
可用内存页,每个桶不能超过M-1块(要逐桶去重),一共最多M-1个桶(桶满写回文件)
聚集操作的执行
-
和去重没区别,先判断是否满足聚集条件,再去重
集合操作的执行
-
交和并操作类似,这里只举例集合差
一趟集合差算法
-
先把一个S的每一块读入缓冲池(M-1块),对R的每一块在缓冲区第M块执行集合差
运行实例
算法分析
基于哈希的集合差算法
-
和去重类似先分桶(M-1个桶最多)
-
然后用一趟去重进行去重(每个桶最多M-1页保证一趟集合差)
运行实例
算法分析
-
IO 分析:写桶读桶各两次,一趟集合差各一次
基于排序的集合差算法
-
对归并段去重
算法分析
连接操作的执行
-
⼀趟连接算法、基于排序的连接算法、基于哈希的连接算法、基于块的嵌套循环连接算法、基于索引的连接算法、算法的I/O代价分析、算法对内存的要求
一趟链接算法
-
先读一个关系到缓存区中,然后连接
执行实例
算法分析
基于元组嵌套循环的连接
-
双重循环,这也节省空间
算法分析
-
对元组操作,IO代价高
基于块的嵌套循环连接
-
对块二重循环
运行实例
算法分析
归并排序连接
-
创建归并段
-
每次先找最小的键
-
读取所有有最小键的归并段进行连接
运行实例
复杂度分析
经典哈希连接
-
桶号相同的才连接
算法分析
索引链接
运行实例
算法分析
-
分为聚簇和非聚簇的情况
-
找每个元组T(R)能与T(R)连接的元组的IO次数(聚簇直接按块算,非聚簇按照元组算)
查询执⾏模型:物化、流⽔线
物化执行
-
用临时关系存储每个操作
-
操作全部执行完才下一个操作
流水线执行
-
前一个操作的结果直接作为下一个操作的输入
-
操作一有结果就下一个操作,不用等
流水线执行实例
迭代器模型
第10章:查询优化
要求准确掌握基本概念熟练进⾏关系代数表达式的等价变换、选择下推、投影下推来产⽣逻辑查询计划熟练估计逻辑查询计划的代价熟练分析物理查询计划的I/O代价
逻辑查询优化
-
代价估算
-
基于代价优化
逻辑查询计划:
查询表达式连接树、连接树(左深连接树、右深连接树、浓密树)
连接顺序的优化
连接关系的角色
连接树
选择左深连接树的优点
基于动态规划的连接顺序优化
逻辑查询计划枚举:
-
关系代数表达式的等价变换、选择下推、投影下推
关系代数表达式的等价变换
选择的变换规则
选择下推
投影的变换规则
投影下推
基数估计:选择、投影、去重、连接、集合操作的结果元组数估计⽅法、直⽅图
基数估计定义
笛卡尔积基数估计
投影基数估计
选择基数估计
二路自然连接的基数估计
多路自然连接的基数估计
集合操作的基数估计
去重操作的基数估计
属性分布的精确近似
直方图的分类
等宽直方图
等高直方图
压缩直方图
等高和等宽直方图对比
基于直方图的基数估计
代价估计:逻辑查询计划的代价估计⽅法
物理查询优化
操作的物理执⾏算法的确定
索引扫描+过滤
多索引扫描+求交集
仅使用索引
顺序扫描
举例:确定连接操作的物理执行算法
一趟连接
索引连接
归并排序连接
哈希连接
嵌套循环连接
中间结果传递⽅式的确定
物化执行
流水线执行
物理计划生成举例
标签:归并,管理系统,关系数据库,元组,part2,算法,操作,排序,连接 来源: https://www.cnblogs.com/zekaiblogs/p/16290955.html