第4章节关系系统及其查询优化.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章节关系系统及其查询优化

第四章 关系系统及其查询优化 关系模型 关系模型的组成部分 数据结构(Structure,关系) 完整性约束(Integrity) 数据操纵(Manipulation) 4.1 关系系统 关系系统与关系模型是密切相关而又不同的两个概念 关系系统笼统地定义为支持关系模型的DBMS 由于关系模型的三个组成部分并不是同等重要,实际产品中的侧重有所不同 思考:什么样的系统可以定义为关系系统? 支持关系模型的数据库管理系统是关系系统? 一个实际的关系系统必须完全支持关系模型? 只有完全支持关系模型的系统才能称为关系系统? 4.1.1 关系系统的定义 一个系统可以定义为关系系统,当且仅当它: 1、支持关系数据库(关系数据结构) 2、支持选择、投影和(自然)连接运算,且对这些运算不必要求定义任何物理存储路径 4.1.2 关系系统的分类 表式关系: 仅支持关系数据结构,不支持集合操作,如倒排表列 最小关系系统: 仅支持关系数据结构和三种关系操作,如FoxBASE, FoxPro 关系完备的系统 支持关系数据结构和所有的关系代数操作,如DB2, Oracle, Sybase, Informix等 全关系系统: 完全地支持关系模型的所有特征 是一个目标,有一套参考准则(12条) 全关系系统的12条基本准则 0. 基础准则:必须能完全通过其关系能力管理数据库 1. 信息准则:所有信息都能用表中的值显式地表示,包括元数据 2. 保证访问准则:保证数据库中的每个数据项都能被访问到 3. 空值的系统化处理:支持空值概念,并能处理空值 4. 联机数据字典:授权用户能够查询数据库的描述信息 5. 统一的数据子语言,且具有定义、操纵、授权、事务处理功能 6. 视图更新准则:理论上可更新的视图应允许由系统更新 7. 支持以关系为对象的高级插入、删除和更新操作 8. 数据物理独立性 9. 数据逻辑独立性 10. 数据完整性的独立性,完整性条件的定义独立于应用程序 11. 分布独立性,数据的重新分布独立于应用程序 12. 无破坏准则:关系系统的一个低级语言不能违背完整性准则 4.2 关系系统的查询优化 4.2.1关系系统及其查询优化 说明 查询处理是RDBMS的核心,而查询优化技术是查询处理的关键技术 用户只需提出“做什么”,不必说明“怎么做” 查询优化的目标 选择有效的策略,求得给定表达式的值 查询优化的优点 使得用户在表达查询时不必考虑查询效率问题 RDBMS将通过优化器(Optimizer)自动进行查询优化 查询优化的一般步骤 将查询转换成某种内部表示,如语法树 语法树有多种形式,如关系代数语法树。 将语法树转换成标准(优化)形式: 优化器将应用等价转换规则反复地(通过内部的循环算法)对查询表达式进行尝试性转换,将原始的语法树转换成“优化”的形式。 选择低层的存取路径: 根据数据字典中的存取路径、数据的存储分布以及聚簇情况等信息来选择具体的执行算法,进一步改善查询效率。 生成由一系列内部操作组成的查询执行方案,选择代价最小的。 4.2.2 一个实例 代价分析1:Q1 1、计算笛卡尔积: 读取所有数据库记录到内存所需时间: 需读取总块数为100 + 20*100 = 2100块,总计花费2100/20=105秒 从内存写到中间文件读取笛卡儿积所需时间: 计算笛卡尔积后生成元组数为103*104=107个。设每块能装10个元组,则将积结果块从内存写到中间文件为107/10/20=5*104秒 2、选择操作 需要将笛卡尔积结果块从中间文件读入内存,需要的时间同样为107/10/20=5*104秒。 3、投影:假设选择操作后得到的结果仅50个元组,最后在此基础上作投影操作,时间可以忽略。 因此,忽略内存代价,执行Q1的总时间约为105+2*5*104秒 代价分析2:Q2 1、计算自然连接 需要读取的总块数和花费的时间为仍为 2100块和105秒 自然连接后生成的元组数为104个,设每块能装10个元组,则计算完自然连接后将这些块从内存写到中间文件时间均为104/10/20=50秒。 2、选择操作 需要将连接后的结果从中间文件读入内存,需要的时间同样为50秒。 3、投影操作:时间可以忽略 因此,忽略内存代价,执行Q1的总时间约为105+2*50 = 205秒 代价分析3:Q3 1、选择运算 先对SC表作选择运算,只需读一遍SC表,存取100块花费时间为100/20=5秒。因为满足条件的元祖仅50个,不必使用中间文件。 2、自然连接 读取Student表,把读入的Student元组和内存中的SC元组作连接。也只需读一遍Student表共100块花费时间为5秒 3、投影运算:时间可以忽略 因此,忽略内存代价,执行Q1的总时间约为5+5 = 10秒 4.2.3

文档评论(0)

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

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

1亿VIP精品文档

相关文档