基本框架
数据库查询实现算法概述
“查询实现”在数据库管理系统中的位置
实现数据库查询的基本思想
查询算法与查询实现
查询实现算法总览
连接算法的实现
这里从逻辑算法、及物理实现算法两个角度进行探讨。其中物理实现算法中考虑到了IO因素。
连接操作的逻辑实现算法
该算法假设了这些操作都是在内存中进行的。
物理层面的算法
【基本的原则】充分利用内存。
后面对于IO的分析,能够反映充分利用内存的重要性。
关系的物理存储相关的参数
篮色字体:表示结果关系。
连接操作的基本实现算法
物理实现,考虑了IO因素,所以多了2层循环。(因为需要先把数据从磁盘,装到内存中)
【磁盘块 与记录】 一个磁盘块中,假设有多个记录。
【忽略因素】 因为IO操作的时间,远大于内存操作的时间,所以这里暂且忽略内存操作的时间。
【IO次数的计算】
R表的读的IO次数:B®
S表的读的IO次数:B®*B(S)
所以总IO次数为:B® + B® * B(S)
连接操作的全主存实现算法P2
连接操作的半主存实现算法P3
连接操作的大关系实现算法P4
一次IO尽量读入多个块。
IO 分析汇总
利用迭代器构造查询实现算法
迭代器算法的提出
两种是实现策略
迭代器算法基础
迭代器的构造
表空间扫描迭代器
【利用迭代器构造迭代器】 表空间扫描,是一个基础的迭代器。后面其它迭代器会用到该基础的迭代器。
【迭代器组装】关系并运算 - 流水线策略的实现
【流水线策略的实现】迭代器的嵌套使用,使得迭代器中的数据能够流水线化处理。即扫描完一条记录,立马进入下一个迭代器,然后得到并运算的结果。
选择操作的迭代器实现
投影操作迭代器
连接操作迭代器
关系/表数据的读取算法
整个关系的一元操作实现算法
去重复
分组聚集
整个关系的二元操作实现算法
连接操作的改进
基于索引的算法
基于索引的选择算法
索引应用分析实例