关系数据库系统而言需要从两个方面讨.ppt
《关系数据库系统而言需要从两个方面讨.ppt》由会员分享,可在线阅读,更多相关《关系数据库系统而言需要从两个方面讨.ppt(22页珍藏版)》请在三一办公上搜索。
1、第11章 关系代数操作的实现算法有效地处理用高级查询语言编写的用户查询是数据库管理系统的主要任务。对关系数据库系统而言,需要从两个方面讨论查询处理:第一方面是各种关系代数操作的算法及其复杂性分析;第二方面是产生逻辑优化的关系代数表达式或其它形式的查询计划。本章讨论第一个方面的工作;下一章讨论第二个方面的工作。第一节 查询的处理过程第二节 选择操作的实现算法第三节 笛卡儿乘积的实现算法第五节 投影操作的实现算法第六节 集合的并交差实现算法.,K,第一节 查询的处理过程查询是由高级查询语言(如SQL)表示的对数据库的一系列操作。下边是查询处理的基本流程:,扫描与语法分析,查询优化,查询代码生成,查
2、询执行,查询,查询的内部表示,查询的执行计划,查询计划的执行代码,查询结果,1)语法检查;2)语义有效性检查;3)完整性安全性检查;4)产生查询的内部表示(树,图).,确定优化的执行策略,产生优化的执行计划,组合DBMS提供的各种操作算法,产生计划的执行代码,控制执行查询计划,产生查询结果,K1,层次和网状数据库的查询语言是面向过程的语言,查询优化由用户程序负责.关系数据库的查询语言是非过程性的语言,查询优化应该由DBMS负责,但因最优化需要大量信息和相当耗时,故仅产生效率较高的执行计划。,以下假设:每个关系储存在一个文件中。每个文件仅储存一个关系。下边的参数是本章经常使用的:TR 关系R的元
3、组数 BR 磁盘块数 IR 每个元组的字节数 M 主存缓冲区的块数 b 每个磁盘块字节数,K11,在分析关系代数各种操作的算法时,我们用对磁盘的存取块数来度量一个算法的复杂性。,第二节 选择操作的实现算法选择操作是在关系R中抽取满足条件C的元组,其SQL表示形式为:,K2,select*from R where C1 and C2 or C3,式中第一子式(select)的含义是返回指定的属性,第二子式(from)指出参加选择操作的关系。第三子式(where)指出选择操作的条件。选择条件可以是简单条件,也可以是复合条件,即把 一组简单条件用逻辑运算符and/or/not连接而成的条件。如果逻辑
4、运算符仅是and,则复合条件称为合取条件。一般的DBMS都提供多种选择算法。不同的算法适用于不同的使用环境。有些算法要求参加运算的关系具有指定的存储结构或存取方法。下边介绍选择操作的实现算法。,接下页,具有简单条件(条件中仅包含关系的一个属性)的选择算法1.线性搜索:按原始顺序扫描关系,取出满足条件的元组。2.二分搜索:要求关系已排序,并且选择条件是排序域上的 等值比较。N元组的关系,其搜索时间复杂性是O(log2N)。3.主索引或HASH搜索:要求选择条件是主索引属性或HASH属性上的等值比较。4.用主索引查找多个元组:若条件是主属性上的非等值比较,则用等值比较可找出所有满足非等值比较条件的
5、元组。5.使用聚集索引按等值比较条件寻找多个元组。6.使用B+树索引搜索。具有合取条件(一组简单条件用and连接而成)的选择算法7.合取选择算法:先按一个简单条件用前述方法选择,然后检查是否满足其它条件。8.复合索引算法:若合取条件都是等值比较,可考虑使用有关属性上的复合索引。9.指针交集算法:若合取条件是等值比较,可用各索引域的 辅助索引得到元组指针集合,然后取这些集合的交集。,K21,第三节 笛卡儿乘积的实现算法设:关系R和S的元组字节数分别是IR和IS,元组数目分别是TR和TS,则笛卡儿乘积RS的元组的字节数是IRIS,元组数目是TRTS,空间字节数是TRTS(IRIS),占用磁盘块数是
6、BRS=TRTS(IRIS)/b,其中b是磁盘块的容量。因此,笛卡儿乘积是一个非常耗时的操作。以下介绍笛卡儿乘积的四种实现算法。在选择算法时,要分析各种算法在访问磁盘时的复杂性和对内存缓冲区的要求。,1 简单算法 2 主存算法3 半主存算法 4 大关系算法,K3,1 笛卡儿乘积的简单算法这种算法仅要求主存提供能容纳两个磁盘块数据的缓冲区。关系R和S各读一块到主存缓冲区,参加笛卡儿乘积运算。通过嵌套循环完成RS。算法定义为:,R,S,K31,输出RS,对结果关系result初始化;for R每块RB do 读RB入主存;for S每块SB do 读SB入主存;在主存完成RB和SB的元组笛卡儿 乘
7、积,产生元组存入result;endfor;endfor;返回result.,由于每读R一块,均扫描S一遍,故整个过程中,R读了一遍,而S读了BR遍。从而磁盘存取量为BR+BRBS+BRS,其中,BRS=TRTS(IR+IS)/b是输出结果的写盘块数。,动画,2 笛卡儿乘积的主存算法 这种算法假设内存缓冲区有足够的容量,能一次性地把关系R和S都读入主存,完成笛卡儿乘积运算。整个过程,两个关系各读了一遍。这种算法的磁盘存取量为BR+BS+BRS,其中BRS=TRTS(IR+IS)/b是写盘块数。算法的形式定义为:,RS,R,S,K32,结果关系result初始化;把R和S读入主存;for 主存中
8、R的每个元组r do for 主存中S的每个元组s do 产生元组(rs)存入result;endfor;endfor;返回result.,动画,3 笛卡儿乘积的半主存算法 这种算法假定内存缓冲区比较大。把关系S一次性读入主存,而R则每次仅读一块到主存参加笛卡儿乘积运算。跟主存算法相同,整个过程,两个关系各读了一遍。磁盘的存取量为BR+BS+BRS,其中BRS=TRTS(IR+IS)/b是写盘块数。算法的形式定义为:,RS,R,S,K33,result初始化;把S读入主存SB;for R每块RB do 读RB入主存;在主存完成RB和SB的元组笛卡儿 乘积,产生元组存入result;endfor
9、;返回result.,该算法要求主存缓冲区能容纳BS+1个磁盘块。从磁盘存取量式子看到,R和S是对称的。若把关系R和S的地位对调,磁盘存取量并没有变化,但对主存缓冲区的要求却有所不同。,动画,4 笛卡儿乘积的大关系算法 设主存缓冲区的容量是M(即能容纳M个磁盘块的数据)。如果 2 2的资源优势,采用比简单算法效率 更高的算法。大关系算法分配给R和S的主存空间分别是1和M-1.算法如下:,RS,R,S,K34,把S分为BS/(M-1)个子集Si,每子集有M-1块对结果关系result初始化;for i=1 to BS/(M-1)do 把Si读入主存;for j=1 to BR do 把R的第j块
10、读入主存;在主存完成RS;产生的元组存入result;endfor;endfor;,由于S读了一遍,R读了BS/(M-1)遍,故磁盘存取量为BRBS/(M-1)+BS+BRS,其中BRS=TRTS(IR+IS)/b是写盘块数,动画,由于两个关系的连接操作实际上是笛卡儿乘积后再按条件选择元组,故连接操作的实现算法可在笛卡儿乘积算法基础上略加修改而成。由于选择操作和两个元组的接驳均在主存进行,故算法的修改并不改变读盘的复杂性,但结果输出量却有不同程度的减少。例如,基于笛卡儿乘积大关系算法的连接操作,读盘的块数仍是BR BS/(M-1)+BS,但连接结果的写盘块数却是BBRS.是等值比较符的连接操作
11、称为等值连接。两个关系同名属性的等值连接称为自然连接。通过修改关系某些属性名,可以把等值连接转化为自然连接。本节仅考虑自然连接。一.连接操作结果的估计 二.连接操作实现算法,第四节 连接操作的实现算法考虑关系R、S关于条件C的连接操作RcS。我们用作为连接操作符。关系R、S连接操作的SQL表示式如右图所示。其中是关系R的属性a和关系S的属性b之间的算术比较符。,select R.*,S.*from R,S where R.a S.b,K4,本页分析所用符号:关系 R S属性 A B B C值域 DA E DB DC元素数 IA J IB IC元组数 TR TS,C,A,B,R,S,一.连接操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 数据库 系统 而言 需要 两个方面
链接地址:https://www.31ppt.com/p-6553382.html