- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Lecture 关系查询处理和查询优化 邯郸学院计算机 张延军 Zhang Yan-jun Department of Computer, Handan College Outline 本章目的: RDBMS的查询处理步骤 查询优化的概念 基本方法和技术 查询优化分类 : 代数优化 物理优化 9.1 关系数据库系统的查询处理 9.2 关系数据库系统的查询优化 9.3 代数优化 9.4 物理优化 9.5 小 结 B树、B-树和B+树 B 树即二叉搜索树: 1. 所有非叶子结点至多拥有两个儿子( Left 和 Right ); 2. 所有结点存储一个关键字; 3. 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; B 树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找不到相应的关键字; 如果 B 树的所有非叶子结点的左右子树的结点数目均保持差不多(平衡),那么 B 树的搜索性能逼近二分查找;但它比连续内存空间的二分查找的优点是,改变 B 树结构(插入与删除结点)不需要移动大段的内存数据,甚至通常是常数开销; 但 B 树在经过多次插入与删除后,有可能导致不同的结构: 右边也是一个 B 树,但它的搜索性能已经是线性的了;同样的关键字集合有可能导致不同的树结构索引;所以,使用 B 树还要考虑尽可能让 B 树保持左图的结构,和避免右图的结构,也就是所谓的“平衡”问题; 实际使用的 B 树都是在原 B 树的基础上加上平衡算法,即“平衡二叉树”;如何保持 B 树结点分布均匀的平衡算法是平衡二叉树的关键;平衡算法是一种在 B 树中插入和删除结点的策略; B树、B-树和B+树 1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B-树,其定义如下: 一棵m阶的B-树满足下列条件: ⑴ 树中每个结点至多有m个孩子; ⑵ 除根结点和叶子结点外,其它每个结点至少有m/2个孩子; ⑶ 若根结点不是叶子结点,则至少有2个孩子; ⑷ 所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息; ⑸ 有k个孩子的非终端结点恰好包含有k-1个关键字。 在B-树中,每个结点中关键字从小到大排列,并且当该结点的孩子是非叶子结点时,该k-1个关键字正好是k个孩子包含的关键字的值域的分划。 因为叶子结点不包含关键字,所以可以把叶子结点看成在树里实际上并不存在外部结点,指向这些外部结点的指针为空,叶子结点的数目正好等于树中所包含的关键字总个数加1。 B树、B-树和B+树 B树中的一个包含n个关键字,n+1个指针的结点的一般形式为: (n,P0,K1,P1,K2,P2,…,Kn,Pn) 其中,Ki为关键字,K1K2…Kn, Pi 是指向包括Ki到Ki+1之间的关键字的子树的指针。 2. B树的查找: 在B树中查找给定关键字的方法是,首先把根结点取来,在根结点所包含的关键字K1,…,kj查找给定的关键字(可用顺序查找或二分查找法),若找到等于给定值的关键字,则查找成功;否则,一定可以确定要查的关键字在某个Ki或Ki+1之间,于是取Pi所指的结点继续查找,直到找到,或指针Pi为空时查找失败。 B树、B-树和B+树 9.1 关系数据库系统的查询处理 RDBMS查询处理阶段 : 1. 查询分析 2. 查询检查 3. 查询优化 4. 查询执行 9.1.1 查询处理步骤 1.查询分析: 对查询语句进行扫描识别出语言符号(SQL关键字、属性名、关系名等),进行语法检查、语法分析。 2.查询检查: 根据数据字典对合法的查询语句进行语义检查 根据数据字典中的用户权限和完整性约束定义对用户的存取权限进行检查 检查通过后把SQL查询语句转换成等价的关系代数表达式 RDBMS一般都用查询树Query Tree(语法分析树Syntax tree)来表示扩展的关系代数表达式 把数据库对象的外部名称转换为内部表示 9.1.1 查询处理步骤 3.查询优化:选择一个高效执行的查询处理策略。 查询优化分类 : 代数优化:指关系代数表达式的优化。 物理优化:指存取路径和底层操作算法的选择。 查询优化方法选择的依据: 基于规则(rule based)。 基于代价(cost based)。 基于语义(semantic based)。 4.查询执行: 依据优化器得到的执行策略生成查询计划。 代码生成器(code generator)生成执行查询计划的代码 。 9.1.2 实
文档评论(0)