【学习笔记】数据库基础 - 数据库查询算法(一趟)

基本框架

在这里插入图片描述

数据库查询实现算法概述

“查询实现”在数据库管理系统中的位置

在这里插入图片描述

实现数据库查询的基本思想

在这里插入图片描述

查询算法与查询实现

在这里插入图片描述

查询实现算法总览

在这里插入图片描述

连接算法的实现

这里从逻辑算法、及物理实现算法两个角度进行探讨。其中物理实现算法中考虑到了IO因素。

连接操作的逻辑实现算法

该算法假设了这些操作都是在内存中进行的
在这里插入图片描述

物理层面的算法

基本的原则充分利用内存
后面对于IO的分析,能够反映充分利用内存的重要性。

关系的物理存储相关的参数

篮色字体:表示结果关系。
在这里插入图片描述

连接操作的基本实现算法

物理实现,考虑了IO因素,所以多了2层循环。(因为需要先把数据从磁盘,装到内存中)
磁盘块 与记录】 一个磁盘块中,假设有多个记录。
忽略因素】 因为IO操作的时间,远大于内存操作的时间,所以这里暂且忽略内存操作的时间。
IO次数的计算
R表的读的IO次数:B®
S表的读的IO次数:B®*B(S)
所以总IO次数为:B® + B® * B(S)
在这里插入图片描述

连接操作的全主存实现算法P2

在这里插入图片描述

连接操作的半主存实现算法P3

在这里插入图片描述

连接操作的大关系实现算法P4

一次IO尽量读入多个块。
在这里插入图片描述

IO 分析汇总

在这里插入图片描述

利用迭代器构造查询实现算法

在这里插入图片描述

迭代器算法的提出

两种是实现策略

在这里插入图片描述

迭代器算法基础

在这里插入图片描述

迭代器的构造

表空间扫描迭代器

利用迭代器构造迭代器】 表空间扫描,是一个基础的迭代器。后面其它迭代器会用到该基础的迭代器。
在这里插入图片描述

【迭代器组装】关系并运算 - 流水线策略的实现

流水线策略的实现】迭代器的嵌套使用,使得迭代器中的数据能够流水线化处理。即扫描完一条记录,立马进入下一个迭代器,然后得到并运算的结果
在这里插入图片描述

选择操作的迭代器实现

在这里插入图片描述

投影操作迭代器

在这里插入图片描述

连接操作迭代器

在这里插入图片描述

关系/表数据的读取算法

在这里插入图片描述

整个关系的一元操作实现算法

去重复

在这里插入图片描述

分组聚集

在这里插入图片描述
在这里插入图片描述

整个关系的二元操作实现算法

在这里插入图片描述

连接操作的改进

在这里插入图片描述

基于索引的算法

基于索引的选择算法

在这里插入图片描述

索引应用分析实例

在这里插入图片描述
在这里插入图片描述

基于有序索引的连接算法? Zig-Zag连接算法

在这里插入图片描述

参考

数据库系统(下):管理与技术

猜你喜欢

转载自blog.csdn.net/TheSnowBoy_2/article/details/88622229