【数据库复习 10】

第十章 查询处理

1.概述:
(1)查询处理是指从数据库中提取数据时设计的一系列活动。
基本步骤包括:
#1 语法分析与翻译
#2 优化
#3 执行
(2)加了“如何执行”注释的关系代数运算称为计算机原语。用于执行一个查询的原语操作序列称为查询执行计划。查询执行引擎接收一个查询执行计划,执行该计划并把结果返回给查询。
(3)传送磁盘块数以及搜索磁盘次数来度量查询计算计划的代价。通常在优化的时候,优化器通常努力去尽可能降低查询计划总得资源消耗,而不是极可能降低响应时间。(响应时间很难估计)
2.选择运算:
在查询处理中,文件扫描是存取数据最低级的操作。文件扫描是用于定位、检索满足选择条件记录的算法。索引结构称为存取路径,因为它们提供了定位和存取数据的一条路径。使用索引的搜索算法称为索引扫描。
(1)选择算法:
·A1(线性搜索) 线性搜索中,每扫描一个文件块,对所有的记录进行测试。看其是否满足选择条件。
·A2(主索引,码等值比较) 对于具有主索引的码属性的等值比较,我们可以使用索引检索到满足相应等值条件的唯一一条记录。

·A3(主索引,非码属性等值比较)当选择条件是基于非码属性A的等值比较式,我们可以利用主索引检索到多条记录。存取多条数据。

·A4(辅助索引,等值比较) 使用等值条件选择可以使用辅助索引。若等值是码,检索一条否则检索多条。

·A5(主索引,比较) 当选择条件是比较时,可使用顺序主索引。

·A6(辅助索引,比较) 可以使用有序辅助索引指导涉及< ≤ > ≥的检索。
Alt

*ts表示磁盘块的平均访问时间的时间 tr表示磁盘传输一个块的数据平均消耗 hi表示B+数的高度。

(2)复杂选择的实现:
Alt

·A7(利用一个索引的合取选择)
首先判断对于其中一个简单条件中的一个属性是否存在一条存取路径可用。若存在,则可以用A2-A6中的一种选择算法来检索满足该条件的记录。然后在内存缓冲区中,通过测试每条检索到的记录是否满足其余的简单条件来最终完成这个运算

·A8(使用组合索引的和去选择)
对于某些合取选择可能可以使用合适的组合索引(composite index,即多个属性上的一个索引)。如果选择指定的是多个或多个属性上的等值条件,并且在这些属性字段的组合上又存在组合索引,则可以直接搜索该索引。索引的类型将决定使用A2,A3或A4算法中的哪一个。
·A9(通过标识符的交实现合取选择)

·A10(通过表示符的并实现析取选择)

3.排序
(1)外部排序归并算法(令M表示内存缓冲区中可以用于排序的块数)
-1.第一阶段:建立多个排好序的归并段。每个归并段都是排序过的,但仅包含关系中的部分记录。
Alt
-2. 第二阶段,对归并段进行归并。暂时假定归并段的总数N小于M,这样我们可以为每个归并段文件分配一个块,此外剩下的空间还应能容纳存放结果的一个块。归并阶段的工作流程如下:
为N个归并段文件Ri各分配一个内存缓冲块,并分别读入一个数据块;
Alt
*一般而言,若关系比内存大得多,则在第一阶段可能产生M个甚至更多的归并段。这种情况下,由于内存足以容纳M-1个缓冲块,可以用M-1段归并段作为输入。
Alt

(2)部分代价分析:
Alt

4.连接运算
(1)嵌套循环链接:
Alt
*该算法主要有两个嵌套的for循环构成,被称为嵌套循环连接。r称为外层关系,s称为内层关系。

代价分析:
Alt
(2)块嵌套循环连接
Alt
代价分析:
Alt
优化:
Alt

(3)索引嵌套循环连接
对于嵌套循环连接,若在内存循环的连接属性上有索引,则可以用索引查找替代文件扫描。对于外层关系r的每一个元组tr,可以利用索引查找s中和元组tr满足连接条件的元组。上述连接方法称为索引嵌套连接。
代价分析:
Alt
(4)归并连接
归并连接算法可用于计算自然连接和等值连接。
-1.归并算法:
Alt

代价分析:
Alt
*如果未排序,则需要先对归并段按照连接属性进行排序。通过为每个归并段分配更多的缓冲块,磁盘搜索的次数能够显著减少。
(5)混合归并连接
假设两个关系中有一个排了序,另一个未排序,但未排序的关系在建列属性上有B+树的辅助索引。该算法把已排序关系与B+数辅助索引叶节点进行归并,所得文件包含了已排序的关系元组以及未排序关系的元祖地址,然后文件按照地址进行排序,从而有效读取。
(6)散列连接
-1. 算法:
Alt

*每个Si用于构造散列索引,用Ri原则进行探察。关系s称为构造用输入,r称为探察用输入。

-2.递归划分:
Alt
-3.溢出处理:
当si的散列索引大于主存是,构造用输入关系s的划分i发生散列表溢出。
少量的偏斜通过增加划分个数,增加的数目被称为避让因子。溢出避免进行谨慎的划分,确保不会溢出。
-4.代价分析:
Alt
(7)混合散列连接:
Alt
(8)复杂连接
Alt

5.其他运算
(1)去重(排序,散列)
(2)投影(投影 去重)
(3)集合运算:
Alt
(4)外连接
Alt
(5)聚集:
Alt
6.表达式计算:
(1)运算符树:
Alt
从底层开始,向上创建临时关系用于计算,被称为物化过程。
(2)流水线:
Alt
实现方式:
At

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值