第6节 关系操作符赋值.ppt

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
典型的关系数据库系统体系结构 RDBMS系统查询处理的基本过程 当用户提出一个SQL查询后,将首先被送到解析器(parser),进行解析和编译处理。 编译后的查询接着被送到查询优化器(optimizer) 优化器将利用DB系统目录中信息(System catalog),产生一个高效的可执行计划。 可执行计划是查询赋值的一个蓝图,它被表示为关系代数操作符树的形式――树中的每个节点通常可对应到一个具体的关系操作符。 通过调用下层的计划执行器,实现最终查询赋值. 查询赋值计划 考虑下面SQL查询例句: SELECT S.sname FROM Reserves R, Sailors S WHERE R.sid = S.sid AND R.bid=100 AND S.rating 5 对应的关系代数表达式: Πsname(σbid=100 AND rating5 ( Reserves ? sid = sid Sailors)) 一个典型的查询赋值计划树 第6章 关系操作符赋值 6.1 外部排序 6.1.1 简单的两路归并排序 一个含7个页文件的两路归并排序 6.1.1 简单的两路归并排序 在每个阶段,文件中的每个页将被读入和写出1次,即在每阶段每个页有2次磁盘I/Os。 如果输入文件的总页数为M,则完成排序需要的总阶段数为?log2M?+1,总的代价为2M(?log2M?+1)次I/Os。 为减小排序代价,我们应设法减少归并的阶段数。 如果可用的缓存页数不是3而是更多(令有B个),那么, 在第1阶段:可以使用更大的子文件; 在归并阶段,可以采用比两路更多路的归并,最多允许采用B-1路归并。 6.1.2 多路归并排序(图6.2 B-1路归并图解 ) 6.1.3 两阶段多路归并排序 假设可用缓存页总数B,文件总页数为M 第1阶段 划分子文件,可得子文件总数=? M/B ?。 第2阶段 归并子文件,因只有两个阶段,要求一次完成所有子文件归并 这要求排序子文件总数: ? M/B ? ≤ B-1 即要求B M1/2,否则,必须进行更多个阶段的排序。 利用组块I/O优化外部排序时间 1次请求读写几个连续页的时间,可能远小于分别独立读写每个页的时间之和。 1次读写同一柱面/磁道上的32个连续页的时间=6.5+7.5+32*0.5=30ms; 分别读写32个页的时间=32*(6.5+7.5+0.5)=464ms。 按组块读写进行外部排序(设每个块含b个页) 输入缓冲区和输出输出缓冲区大小:都取为一个组块大小。 以组块为单位进行读写 在归并阶段,一次可归并的最大子文件数为?(B-b)/b? 表6.1 组块大小b=32时一些外部排序需要的阶段数 6.2 关系操作符赋值实现基础 6.2 关系操作符赋值实现基础 6.2.1 关系操作符赋值实现的三个基本操作 循环(Iteration) 循环检查输入关系中的每个元组。 索引(Indexing) 如果选择或连接的条件已指定,通常可使用一个索引来检查满足条件的元组。 分区(Partitioning) 通过基于一个排序键来划分元组,我们通常能够将一个关系操作分解为针对各个分区元组的、代价更小的一组操作。 排序和散列是两种最常用的分区划分技术。 6.2.2 存取路径 存取路径 所有关系操作符的赋值算法,通常都必须从一个或多个关系检索元组。 从关系存取元组的方式也称为存取路径。 两个最常用的存取路径 1) 关系文件扫描; 2) 索引加上匹配选择条件: attr op value 。 如果这个attr也正好是某索引I的搜索键,则称索引I匹配选择条件。 当存在多种存取路径时,称具有最小存取代价的存取路径为具有最好选择性的存取路径。 6.2.3 代价计算模型 关系操作符的输入对象,即关系,位于辅存(磁盘)中 只考虑I/O代价,不考虑CPU代价。而衡量I/O代价的标准是需要读取或写出的页数。 对每个关系操作符,我们将讨论几种可选的存取路径。在比较不同赋值计划代价时,我们统一都不计算写出结果的代价。 几个可能会影响关系操作符赋值代价的重要参数 位于主存缓冲池中的可用缓存页数B; 关系R实际数据的存储页数M; 关系R的元组数T(R); 关系R不同的元组数V( R, [a1,a2,…,an]) 聚簇关系及其定义 如果R的所有元组存储在M个页或近似M个页中。如果R的元组分布在其它关系的元组之间,则称关系R是非聚簇的。 扫描聚簇关系R的代价为M次I/Os;最坏情况下,扫描非聚簇R的代价为T (R)

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档