关系操作符赋值优秀PPT.ppt





《关系操作符赋值优秀PPT.ppt》由会员分享,可在线阅读,更多相关《关系操作符赋值优秀PPT.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关系操作符赋值关系操作符赋值第1页,本讲稿共71页典型的关系数据库系统体系结构典型的关系数据库系统体系结构 第2页,本讲稿共71页RDBMS系统查询处理的基本过程系统查询处理的基本过程 v当用户提出一个当用户提出一个SQL查询后,将首先被送到解析查询后,将首先被送到解析器器(parser),进行解析和编译处理。,进行解析和编译处理。v编译后的查询接着被送到查询优化器编译后的查询接着被送到查询优化器(optimizer)优化器将利用DB系统目录中信息(System catalog),产生一个高效的可执行计划。可执行计划是查询赋值的一个蓝图,它被表示为关系代数操作符树的形式树中的每个节点通常可对应
2、到一个具体的关系操作符。v通过调用下层的计划执行器,实现最终查询赋值通过调用下层的计划执行器,实现最终查询赋值.v关系操作符赋值是查询处理的基础,它们好比是实现整个查询赋关系操作符赋值是查询处理的基础,它们好比是实现整个查询赋值的一些基本积木块。值的一些基本积木块。v本章集中讨论单个关系操作符的赋值实现问题。本章集中讨论单个关系操作符的赋值实现问题。第3页,本讲稿共71页查询赋值计划查询赋值计划考虑下面考虑下面SQL查询例句:查询例句:SELECT S.sname FROM Reserves R,Sailors S WHERE R.sid=S.sid AND R.bid=100 AND S.r
3、ating 5 v对应的关系代数表达式:对应的关系代数表达式:sname(bid=100 AND rating5(Reserves sid=sid Sailors)第4页,本讲稿共71页一个典型的查询赋值计划树一个典型的查询赋值计划树第5页,本讲稿共71页第第6章章 关系操作符赋值关系操作符赋值6.1 外部排序外部排序 6.2 关系操作符赋值实现基础关系操作符赋值实现基础6.6 连接操作赋值连接操作赋值6.7 集合操作的赋值实现集合操作的赋值实现6.8 聚合操作的赋值实现聚合操作的赋值实现6.9 各类代数操作符赋值实现小结各类代数操作符赋值实现小结6.3 RDBMS系统的目录信息系统的目录信息
4、6.4 选择操作符赋值选择操作符赋值6.5 投影与消除重复操作赋值投影与消除重复操作赋值第6页,本讲稿共71页6.1 外部排序外部排序6.1.1 一种简单的两路归并排序6.1.2 多路归并排序6.1.3 两阶段多路归并排序6.1.4 最小化外部排序时间排序是排序是排序是DBDBDB系统系统系统最基本最基本最基本的操作的操作的操作DB系统中有很多场合需要用到排序系统中有很多场合需要用到排序u 用户可能希望以某种指定顺序返回查询结果集。用户可能希望以某种指定顺序返回查询结果集。u 排序记录集是批处理建立排序记录集是批处理建立B+树的第一步树的第一步(5.3.3)u 排序是消除一个记录集中重复记录的
5、一种有效方法。排序是消除一个记录集中重复记录的一种有效方法。u 广泛使用的关系连接操作,可基于排序的方法实现。广泛使用的关系连接操作,可基于排序的方法实现。第7页,本讲稿共71页6.1.1 简单的两路归并排序简单的两路归并排序第8页,本讲稿共71页一个含一个含7个页文件的两路归并排序个页文件的两路归并排序第9页,本讲稿共71页6.1.1 简单的两路归并排序简单的两路归并排序v在每个阶段,文件中的每个页将被读入和写出在每个阶段,文件中的每个页将被读入和写出1次,即在每阶段每个页有次,即在每阶段每个页有2次磁盘次磁盘I/Os。v如果输入文件的总页数为如果输入文件的总页数为M,则完成排序需要的,则完
6、成排序需要的总阶段数为总阶段数为 log2M+1,总的代价为,总的代价为2M(log2M+1)次次I/Os。为减小排序代价,我们应设法减少归并的阶段数。v如果可用的缓存页数不是如果可用的缓存页数不是3而是更多而是更多(令有令有B个个),那么,那么,在第1阶段:可以使用更大的子文件;在归并阶段,可以采用比两路更多路的归并,最多允许采用B-1路归并。第10页,本讲稿共71页6.1.2 多路归并排序多路归并排序(图图6.2 B-1路归并图解路归并图解)第11页,本讲稿共71页6.1.3 两阶段多路归并排序两阶段多路归并排序 假设可用缓存页总数假设可用缓存页总数B,文件总页数为,文件总页数为Mv第第1
7、阶段阶段 划分子文件,可得子文件总数=M/B。v第第2阶段阶段 归并子文件,因只有两个阶段,要求一次完成所有子文件归并这要求排序子文件总数:M/B B-1 即要求B M1/2,否则,必须进行更多个阶段的排序。v两阶段排序的总代价为:两阶段排序的总代价为:M*4次次 I/Os 例例6.1 如果每个页的平均读写时间按如果每个页的平均读写时间按15ms计算,计算两阶段排计算,计算两阶段排序序250000个页需要的总时间。个页需要的总时间。第一个阶段要读写500000个页,需要时间为5000000.015=7500s,约125分钟。第二个阶段也需要125分钟!第12页,本讲稿共71页利用组块利用组块I
8、/O优化外部排序时间优化外部排序时间 v1次请求读写几个连续页的时间,可能远小于分别独立读写每次请求读写几个连续页的时间,可能远小于分别独立读写每个页的时间之和。个页的时间之和。1次读写同一柱面/磁道上的32个连续页的时间=6.5+7.5+32*0.5=30ms;分别读写32个页的时间32*(6.5+7.5+0.5)=464ms。v按组块读写进行外部排序按组块读写进行外部排序(设每个块含设每个块含b个页)个页)输入缓冲区和输出输出缓冲区大小:都取为一个组块大小。以组块为单位进行读写在归并阶段,一次可归并的最大子文件数为(B-b)/bv按组块读写进行外部排序按组块读写进行外部排序(设每个块含设每
9、个块含b个页)个页)输入缓冲区和输出输出缓冲区大小:都取为一个组块大小。以组块为单位进行读写在归并阶段,一次可归并的最大子文件数为(B-b)/b。v选用大组块缓冲区时,归并的阶段数会增加,即算法总的选用大组块缓冲区时,归并的阶段数会增加,即算法总的I/Os数将增加。数将增加。但这完全可从每页平均存取时间减少来得到补偿。v在现行机器条件下,即使是使用了较大的块缓冲,除非少数特在现行机器条件下,即使是使用了较大的块缓冲,除非少数特大的文件,大部分的文件排序都可以在两个阶段内完成排序。大的文件,大部分的文件排序都可以在两个阶段内完成排序。第13页,本讲稿共71页表表6.1 组块大小组块大小b=32时
10、一些外部排序需要的阶段数时一些外部排序需要的阶段数 第14页,本讲稿共71页6.2 关系操作符赋值实现基础关系操作符赋值实现基础6.2.1 关系操作符赋值实现的三个基本操作 6.2.2 存取路径6.2.3 代价计算模型 6.2.4 关系操作符赋值的实现算法分类6.2.5 迭代器技术6.2.6 主存散列表技术6.2.7 本章查询用例说明 第15页,本讲稿共71页6.2 关系操作符赋值实现基础关系操作符赋值实现基础 6.2.1 关系操作符赋值实现的三个基本操作关系操作符赋值实现的三个基本操作v循环循环(Iteration)循环检查输入关系中的每个元组。v索引索引(Indexing)如果选择或连接的
11、条件已指定,通常可使用一个索引来检查满足条件的元组。v分区分区(Partitioning)通过基于一个排序键来划分元组,我们通常能够将一个关系操作分解为针对各个分区元组的、代价更小的一组操作。排序和散列是两种最常用的分区划分技术。第16页,本讲稿共71页6.2.2 存取路径存取路径v存取路径存取路径 所有关系操作符的赋值算法,通常都必须从一个或多个关系检索元组。从关系存取元组的方式也称为存取路径。v两个最常用的存取路径两个最常用的存取路径1)关系文件扫描;2)索引加上匹配选择条件:attr op value。v如果这个如果这个attr也正好是某索引也正好是某索引I的搜索键,则称索引的搜索键,则
12、称索引I匹配选择匹配选择条件。条件。当存在多种存取路径时,称具有最小存取代价的存取路径为具有最好选择性的存取路径。第17页,本讲稿共71页6.2.3 代价计算模型代价计算模型 v关系操作符的输入对象,即关系,位于辅存关系操作符的输入对象,即关系,位于辅存(磁盘磁盘)中中v只考虑只考虑I/O代价,不考虑代价,不考虑CPU代价。而衡量代价。而衡量I/O代价的标准是需要读取或写出的页数。代价的标准是需要读取或写出的页数。v对每个关系操作符,我们将讨论几种可选的存取对每个关系操作符,我们将讨论几种可选的存取路径。在比较不同赋值计划代价时,我们统一都路径。在比较不同赋值计划代价时,我们统一都不计算写出结
13、果的代价。不计算写出结果的代价。第18页,本讲稿共71页几个可能会影响关系操作符赋值代价的重要参数几个可能会影响关系操作符赋值代价的重要参数 v位于主存缓冲池中的可用缓存页数位于主存缓冲池中的可用缓存页数B;v关系关系R实际数据的存储页数实际数据的存储页数M;v关系关系R的元组数的元组数T(R);v关系关系R不同的元组数不同的元组数V(R,a1,a2,an)v聚簇关系及其定义聚簇关系及其定义如果R的所有元组存储在M个页或近似M个页中。如果R的元组分布在其它关系的元组之间,则称关系R是非聚簇的。扫描聚簇关系R的代价为M次I/Os;最坏情况下,扫描非聚簇R的代价为T(R)次I/Os。本书约定在没有
14、特别声明时,都默认关系是聚簇存储的。第19页,本讲稿共71页6.2.4 关系操作符赋值的实现算法分类关系操作符赋值的实现算法分类v按算法实现时,所采用的主存数据结构分类:按算法实现时,所采用的主存数据结构分类:基于排序;基于散列;基于索引。v按算法实现的难度代价:按算法实现的难度代价:一趟算法算法实现时,相应的关系表只需扫描1次;一趟半算法一个关系表只需扫描1次,但另一个关系表需扫描多次;二趟算法(算法实现时,相应的关系表需扫描2次);多趟算法(算法实现时,相应的关系表需扫描多次)。第20页,本讲稿共71页6.2.4 关系操作符赋值的实现算法分类关系操作符赋值的实现算法分类v按操作符的操作对象
15、数分类:按操作符的操作对象数分类:一元操作实现算法如选择(c(R)、投影(L(R)、消除重复(R)、分组 L(R)等。二元操作实现算法 如连接()、并()、交()、差()、叉积()等v按是否可以分割并独立处理关系的各页来分类:按是否可以分割并独立处理关系的各页来分类:一次多元组算法。允许独立地处理关系的每个页,前后页处理结果没有相互影响,如选择(c(R)、投影(L(R)等操作。全关系算法。第21页,本讲稿共71页6.2.5 迭代器技术迭代器技术v代数操作符的迭代器接口代数操作符的迭代器接口包括:open,getnext和close三个函数它们隐藏了操作符如何实现的细节,允许我们以一致的方式看待
16、所有的操作符节点。v通过多个迭代器连接,可构成具有流水化工作方通过多个迭代器连接,可构成具有流水化工作方式的式的迭代器网络迭代器网络。第22页,本讲稿共71页例例6.3 TableScan(R)迭代器实现迭代器实现第23页,本讲稿共71页算法算法6.2 包并运算的迭代器实现算法包并运算的迭代器实现算法 第24页,本讲稿共71页6.2.6 主存散列表技术主存散列表技术 第25页,本讲稿共71页本章查询用例说明本章查询用例说明v仍用第仍用第2章章“水手值勤管理水手值勤管理DB模式模式”的三个关系的三个关系表:表:vSailors(sid:integer,sname:string,rating:in
17、teger,age:real)vBoats(bid:integer,bname:string,color:string)vReserves(sid:integer,bid:integer,day:dates,rname:string)关系关系Reserves的元组大小为的元组大小为40字节,每个字节,每个页可存储页可存储100个元组,总共有个元组,总共有1000个页。个页。关系关系Sailors的元组大小为的元组大小为50字节,每个页可字节,每个页可存储存储80个元组,总共有个元组,总共有500个页。个页。第26页,本讲稿共71页6.3 RDBMS系统的目录信息系统的目录信息6.3.1 存储在
18、DB系统目录中的信息6.3.2 DB系统目录组织结构第27页,本讲稿共71页6.3 RDBMS系统的目录信息系统的目录信息v在在DB系统目录中,一般至少都会有一些系统范围系统目录中,一般至少都会有一些系统范围的信息,如缓冲池大小、用户帐户或认证信息的信息,如缓冲池大小、用户帐户或认证信息,以及一些关于个体关系、索引或视图的信息:以及一些关于个体关系、索引或视图的信息:v对每个关系模式结构,有关信息包括:对每个关系模式结构,有关信息包括:关系名、文件名、文件结构(如堆结构);属性名、类型、长度;关系上的每个索引名;关系上的约束定义。v对每个索引对每个索引索引名、索引结构(如B+树);搜索键的属性
19、。v对每个视图对每个视图视图名字与定义。第28页,本讲稿共71页可供查询优化器应用的目录信息(可供查询优化器应用的目录信息(1)v关系关系R的元组数的元组数T(R)。v关系关系R元组大小元组大小ST(R)。v含关系含关系R元组的文件总页数元组的文件总页数M(R)。v关系关系R的页因子,即一个页中能存放关系的页因子,即一个页中能存放关系R元组的元组的数目数目FP(R)。若关系R聚簇存储在一个文件中,则有M(R)=T(R)/FP(R)。v关系关系R在属性在属性A上所具有的不同值数上所具有的不同值数V(A,R)。v关系关系R在属性在属性A上的等值选择基数上的等值选择基数SC(A,R)。当A为码属性时
20、SC(A,R)1;当A为非码属性时,如假定V(R,A)个不同值在R的元组中均匀分布,则SC(A,R)=T(R)/V(R,A)。第29页,本讲稿共71页可供查询优化器应用的目录信息(可供查询优化器应用的目录信息(2)v索引基数值索引基数值(Index Cardinality):对每个索引:对每个索引I,存,存储索引所含的不同键数储索引所含的不同键数Nkeys(I)。v索引大小索引大小(Index size):每个索引:每个索引I,存储索引文件,存储索引文件的总页数的总页数(INPages(I)。对B+树,INPages(I)存储叶子节点的总数。v索引深度索引深度(Index height):IH
21、(I),对于散列索引,它是桶的深度(页数);对B+树形索引,它是非叶子的总层数。v索引范围索引范围(Index Range):每个索引:每个索引I,可表示的最,可表示的最小键值小键值(ILow(I)和最大键值和最大键值(IHigh(I)。第30页,本讲稿共71页6.4 选择操作符赋值选择操作符赋值6.4.1 简单扫描方法 6.4.2 利用排序特性进行选择赋值6.4.3 利用索引进行选择赋值 6.4.4 一般的选择条件处理第31页,本讲稿共71页6.4 选择操作符赋值选择操作符赋值 v例例6.5 SELECT*FROM Reserves R WHERE R.rnames=Joe 令令M是关系是关
22、系R的总页数,本例中的总页数,本例中M=1000。6.4.1 简单扫描方法简单扫描方法6.4.2 利用排序特性进行选择赋值利用排序特性进行选择赋值 用二分法,定位第1个满足条件的记录。这一步的代价为O(log 2 M)。从上1步定位的位置开始扫描关系R,直到找到一条不满足条件的记录时才停止继续扫描。该步代价取决于满足条件的元组数,代价为 O(0M)对属性A上的等值选择,该步代价约SC(A,R)/FP(R)第32页,本讲稿共71页6.4.3 利用索引进行选择赋值利用索引进行选择赋值 v有能与选择条件相匹配的索引可用有能与选择条件相匹配的索引可用 v基本代价计算式:基本代价计算式:IH(I)+SC
23、(A,R)/FP(R)v有关影响因素有关影响因素索引组织结构(顺序、B+树或散列)选择条件(等值、范围或其它选择)满足条件的元组总数(索引键是否为码属性)关系元组是否聚簇存储、索引是否聚集rids是否按page-id排序。第33页,本讲稿共71页6.4.3 利用索引进行选择赋值利用索引进行选择赋值v用散列索引实现等值选择赋值用散列索引实现等值选择赋值如果在R.attr上有散列索引可用,且op是等值运算符,则利用这个散列索引进行赋值可能是最好的存取路径。例6.6 考虑例6.5查询,假定在Reserves:rname上有散列索引,一个名为Joe的人做了100个值派。分析检索这100个Reserve
24、s元组需要的代价。v基于基于B+树索引的选择赋值树索引的选择赋值例6.7 考虑Reserves上rname%C形式选择。假设名字按第1个字母均匀分布,选择结果集约含有10%的元组,即有大约10000个元组或100个页。若有rname上的一个聚集B+树索引,分析检索满足条件元组的代价。第34页,本讲稿共71页6.4.4 一般的选择条件处理(一般的选择条件处理(1)v任何复杂条件,总可改写为任何复杂条件,总可改写为CNF形式形式 conjunctive normal form,CNF 例如,(day8/9/94rname=Joe)bid=5sid=3,等价于 (day8/9/94bid=5sid=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关系 操作 赋值 优秀 PPT

限制150内