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

文章目录

  • 基本框架
  • 数据库查询实现算法概述
    • “查询实现”在数据库管理系统中的位置
    • 实现数据库查询的基本思想
    • 查询算法与查询实现
    • 查询实现算法总览
  • 连接算法的实现
    • 连接操作的逻辑实现算法
    • 物理层面的算法
      • 关系的物理存储相关的参数
      • 连接操作的基本实现算法
      • 连接操作的全主存实现算法P2
      • 连接操作的半主存实现算法P3
      • 连接操作的大关系实现算法P4
      • IO 分析汇总
  • 利用迭代器构造查询实现算法
    • 迭代器算法的提出
      • 两种是实现策略
    • 迭代器算法基础
    • 迭代器的构造
      • 表空间扫描迭代器
      • 【迭代器组装】关系并运算 - 流水线策略的实现
      • 选择操作的迭代器实现
      • 投影操作迭代器
      • 连接操作迭代器
  • 关系/表数据的读取算法
  • 整个关系的一元操作实现算法
    • 去重复
    • 分组聚集
  • 整个关系的二元操作实现算法
    • 连接操作的改进
  • 基于索引的算法
    • 基于索引的选择算法
      • 索引应用分析实例
    • 基于有序索引的连接算法? Zig-Zag连接算法
  • 参考

基本框架

数据库查询实现算法概述

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

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第1张图片

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

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第2张图片

查询算法与查询实现

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第3张图片

查询实现算法总览

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第4张图片

连接算法的实现

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

连接操作的逻辑实现算法

该算法假设了这些操作都是在内存中进行的
【学习笔记】数据库基础 - 数据库查询算法(一趟)_第5张图片

物理层面的算法

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

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

篮色字体:表示结果关系。
【学习笔记】数据库基础 - 数据库查询算法(一趟)_第6张图片

连接操作的基本实现算法

物理实现,考虑了IO因素,所以多了2层循环。(因为需要先把数据从磁盘,装到内存中)
磁盘块 与记录】 一个磁盘块中,假设有多个记录。
忽略因素】 因为IO操作的时间,远大于内存操作的时间,所以这里暂且忽略内存操作的时间。
IO次数的计算
R表的读的IO次数:B®
S表的读的IO次数:B®*B(S)
所以总IO次数为:B® + B® * B(S)
【学习笔记】数据库基础 - 数据库查询算法(一趟)_第7张图片

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

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

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

一次IO尽量读入多个块。

IO 分析汇总

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第8张图片

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

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第9张图片

迭代器算法的提出

两种是实现策略

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第10张图片

迭代器算法基础

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第11张图片

迭代器的构造

表空间扫描迭代器

利用迭代器构造迭代器】 表空间扫描,是一个基础的迭代器。后面其它迭代器会用到该基础的迭代器。
【学习笔记】数据库基础 - 数据库查询算法(一趟)_第12张图片

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

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

选择操作的迭代器实现

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第13张图片

投影操作迭代器

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第14张图片

连接操作迭代器

关系/表数据的读取算法

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第15张图片

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

去重复

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第16张图片

分组聚集

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第17张图片
【学习笔记】数据库基础 - 数据库查询算法(一趟)_第18张图片

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

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第19张图片

连接操作的改进

基于索引的算法

基于索引的选择算法

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第20张图片

索引应用分析实例

【学习笔记】数据库基础 - 数据库查询算法(一趟)_第21张图片
【学习笔记】数据库基础 - 数据库查询算法(一趟)_第22张图片

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

参考

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

你可能感兴趣的:(数据库相关,数据结构)