数据库系统概念(机械工业出版社,第六版)复习——第十一章:查询处理和查询优化

来源:互联网 发布:中兴网络机顶盒usb 编辑:程序博客网 时间:2024/05/16 00:45

第十一章 查询处理和查询优化

查询优化

在所有等效执行计划中选择具有最小查询执行代价的计划

查询代价的度量

只用传输磁盘块数以及搜索磁盘次数来度量查询计算计划的代价

tT – 传输一个块的时间

tS – 磁盘平均访问时间(磁盘搜索时间+旋转延迟)

传输 b 个块以及执行 s 次磁盘搜索的操作代价:
        b * tT + s * tS

可以通过使用额外的缓冲空间来减少磁盘 I/O 操作。

选择运算

利用文件扫描和索引的选择:

算法A1(线性搜索):

时间代价= br次磁盘块传输 + 1次磁盘搜索= br*tT + tS。

br代表文件中的磁盘块数

对作用在码属性上的选择操作来说,系统在找到所需记录以后可以立即停止

算法A1(线性搜索,码等值比较):

时间代价 = (br /2) 次磁盘块传输 + 1 次磁盘搜索

最坏情况下,需要br个块传输

算法A2(B+树主索引,码属性等值比较):

Cost = (hi + 1) * (tT + tS)

上述公式:索引查找穿越树的高度,再加一次I/O取记录,每个这样的I/O操作需要一次搜索和一次块传输。hi为B+树高度

算法A3(B+树主索引,非码属性等值比较):

Cost = hi * (tT + tS) + tS + tT * b

上述公式:树的每层一次搜索,第一个块的搜索,b是包含具有指定搜索码的块数,假定这些块是顺序存储的叶子块,并且不需要额外搜索

算法A4(B+树辅助索引,码属性等值比较):

Cost = (hi + 1) * (tT + tS)

上述公式:和A2相似。索引查找穿越书的高度,再加一次I/O取记录,每个这样的I/O操作需要一次搜索和一次块传输

算法A4(B+树辅助索引,非码属性等值比较):

Cost = (hi + n) * (tT + tS)

上述公式:n是所取记录数,索引查找的代价和A3相似,但是每条记录可能在不同的块上,这需要每条记录一次搜索。如果n比较大,查询代价非常大

涉及比较的选择:

算法A5(B+树主索引,比较):

Cost = hi * (tT + tS) + tS + tT * b

上述公式:和A3非码相似。树的每层一次搜索,第一个块的搜索,b是包含具有指定搜索码的块数,假定这些块是顺序存储的叶子块,并且不需要额外搜索

算法A6(B+树辅助索引,比较):

Cost = (hi + n) * (tT + tS)

上述公式:和A4非码相似。n是所取记录数,但是每条记录可能在不同的块上,这需要每条记录一次搜索。如果n比较大,查询代价非常大

连接运算

嵌套循环连接、块嵌套循环连接、索引嵌套循环连接、归并连接、散列连接

表达式计算

计算一个完整表达式树的两种方法:

物化:输入一个关系或者已完成的计算,产生一个表达式的结果,在磁盘中物化它,重复该过程。

流水线:一个正在执行的操作的部分结果传送到流水线的下一个操作,使得两操作可同时进行。

查询优化

查询优化就是从多个可能的策略中,找出最有效的查询执行计划的一种处理过程。

优化一方面可以在关系代数级别发生,另一方面是为处理查询选择一个详细的策略,比如执行算法、选择索引等。

等价规则

等价性:如果两个关系代数表达式在所有有效数据库实例中都会产生相同的元组集,则称它们是等价的。(元组的顺序是无关紧要的)

阅读全文
0 0