- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关系系统和查询优化.ppt
数 据 库 原 理 华北电力大学 控制与计算机工程学院 第九章 关系系统和查询优化 数据库原理 本章的主要内容 9.1 关系系统 9.2 关系系统的查询优化 9.3 代数优化 关系系统与关系模型 关系系统 能够在一定程度上支持关系模型的数据库管理系统是关系系统。 由于关系模型中并非每一部分都是同等重要的,所以并不苛求一个实际的关系系统必须完全支持关系模型。 关系系统与关系模型 关系系统与关系模型 关系数据结构 域及域上定义的关系 关系操作 并、交、差、广义笛卡尔积、选择、投影、连接、除等 关系完整性 实体完整性、参照完整性、用户自己定义的完整性 关系系统与关系模型 关系系统的定义 一个数据库管理系统可定义为关系系统,当且仅当它至少支持: 关系数据库(即关系数据结构)系统中只有表这种结构; 支持选择、投影和(自然)连接运算 对这些运算不要求用户定义任何物理存取路径。 这是对关系系统的最低要求。 关系系统与关系模型 关系系统的定义 不支持关系数据结构的系统显然不能称为关系系统。 仅支持关系数据结构,但没有选择、投影和连接运算功能的系统仍不能算作关系系统。原因是:不能提高用户的生产率。 支持选择、投影和连接运算,但要求定义物理存取路径,这种系统也不能算作真正的关系系统。原因是:降低或丧失了数据的物理独立性。 在关系系统中,选择、投影、连接运算是最有用的运算。 关系系统的分类 关系系统的分类 分类依据:支持关系模型的程度。 表式系统:支持关系数据结构(即表) (最小)关系系统:支持关系数据结构; 选择、投影、连接关系操作 关系完备的系统:支持:关系数据结构;所有的关系代数操作 全关系系统:支持:关系模型的所有特征 关系系统的分类 关系系统的分类 本章的主要内容 9.1 关系系统 9.2 关系系统的查询优化 9.3 代数优化 查询优化概述 查询优化的必要性 查询优化极大地影响RDBMS的性能。 查询优化的可能性 关系数据语言的级别很高,使DBMS可以从关系表达式中分析查询语义。 查询优化概述 由DBMS进行查询优化的好处 用户不必考虑如何最好地表达查询以获得较好的效率,系统可以比用户程序的优化做得更好。 优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息。 如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。在非关系系统中必须重写程序,而重写程序在实际应用中往往是不太可能的。 优化器可以考虑数百种不同的执行计划,而程序员一般只能考虑有限的几种可能性。 优化器中包括了很多复杂的优化技术 查询优化概述 查询优化的目标 选择有效策略,求得给定关系表达式的值 实际系统的查询优化步骤: 将查询转换成某种内部表示,通常是语法树; 根据一定的等价变换规则把语法树转换成标准(优化)形式; 选择低层的操作算法,对于语法树中的每一个操作,计算各种执行算法的执行代价,选择代价小的执行算法; 生成查询计划(查询执行方案),查询计划是由一系列内部操作组成的。 查询优化概述 代价模型 集中式数据库 单用户系统:总代价 = I/O代价 + CPU代价 多用户系统:总代价 = I/O代价 + CPU代价 + 内存代价 分布式数据库 总代价 = I/O代价 + CPU代价[+ 内存代价] + 通信代价 查询优化的必要性 例:查询求选修了课程C2的学生姓名 ? SELECT S.Sname FROM S, SC WHERE S.Sno=SC.Sno AND SC.Cno= C2; 假设1:外存:S:1000个元组,SC:10000个元组,选修C2号课程:50个元组 假设2:一个内存块装:10个S元组,或100个SC元组;内存中一次可以存放:5块S元组,1块SC元组和若干块连接结果元组 假设3:读写速度:20块/秒 假设4:连接方法:基于数据块的嵌套循环法 查询优化的必要性 执行策略1 —— 广义笛卡尔积 Q1 = πsname(σS.Sno=SC.Sno∧SC.Cno=2 (S╳SC) )? ① S╳SC 读取总块数 = 读S表块数 +每次读取SC块数*读SC表次数 =1000/10+(10000/100)×(1000/(10×5))=100+20×100=2100 读数据时间1 = 2100/20 = 105秒 中间结果大小 = 1000*10000 = 107 (1千万条元组) 设每块装10个中间结果元组,则:写中间结果时间 = 107/10/20 = 50000秒? 查询优化的必要性 执行策略1 —— 广义笛卡尔积 Q1 = πsname(σS.Sno=SC.Sno∧SC.Cno=2 (S╳SC) )? ①
文档评论(0)