查询处理与查询代价估计解读.pptx

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
查询处理与查询代价估计 目录 查询处理 1、查询分析 2、查询优化 3、查询执行 查询代价估计 查询处理 查询处理 查询处理是指从数据库中提取数据的一系列活动。 包括: 1、将用高层数据库语言表示的查询语句翻译成文 件系统这一物理层次上实现的表达式; 2、为优化查询进行各种转换; 3、查询的实际执行。 查询处理过程 关系代数 表达式 查询分析 在数据库执行查询处理之前,系统先将查询语句翻译成可使用的形式。 翻译过程: 1、语法分析器将查询翻译成系统内部表示形式; 2、翻译的同时进行语法检查; 3、构造查询语句的语法分析树; 4、翻译成关系代数表达式。 对于给出的一个查询,一般经过翻译器翻译后都会有多种关系代数表达式与之对应。 查询分析实例 查询实例: 求选修2号课程的学生姓名 SQL表示: select Sname from Students, SC where Students.Sno = SC.Sno and Cno = ‘2’; 翻译结果: Q1=πSname(σStudent.Sno=SC.Sno∧Sc.Cno=2 (Student×SC)) Q2=πSname(σSc.Cno=2 (Student SC)) Q3=πSname(Student σSc.Cno=2(SC)) 优化器功能 功能:负责产生最有效的查询执行计划(QEP) 逻辑转换部分:对于一个语法树,根据关系代数等价变换规则,得到所有的等价的关系代数表达式; 物理转换部分:对于每一个关系代数表达式,根据查询引擎提供的物理操作,找出所有可能的查询执行计划。 比较和查找:根据代价估计函数,估计每一个查询执行计划的代价,并从中找出代价最小的查询执行计划。 优化器处理过程 查询请求 等价变换规则集 逻辑转换 物理转换 物理操作集 查找 代价估计函数 代价最小QEP 等价的语法树集合 等价的QEP 查询执行引擎 功能: 查询执行引擎为每一个关系操作的实现提供多种物理实现方法。 选择操作有两种可能的物理操作:顺序扫描和索引扫描 连接操作有三种可能的物理操作:嵌套循环连接、合并连接和散列连接。 查询执行引擎还可以提供更多的物理实现方法。每一种物理实现方法利用不同的存取路径(如索引、数据的存储分布、元组的排序等) 负责产生执行查询的代码 查询代价的估计 查询的代价 查询执行开销主要包括 集中式数据库 总代价 = I/O代价 + CPU代价 +内存代价 分布式数据库 总代价 = I/O代价 + CPU代价 + 内存代价 + 通信代价 查询代价主要取决于磁盘访问的次数。 一个给定的查询,对应多种可能的处理策略。策略不同,访问磁盘的次数相差很大,甚至相差几个数量级。 查询代价的度量 对于大型数据库系统而言,在磁盘上存取数据的代价通常是最重要的代价 ,可以通过传输磁盘块数以及搜索磁盘次数来度量。 使用 tT 表示传输一块数据的平均耗时,tS 表示搜索一次磁盘的平均定位时间(包括搜索时间加旋转时间)。 则一个传输b块并作s次磁盘搜索的操作将耗时 b*tT+s*tS 毫秒(ms) 写磁盘块的代价通常是读磁盘块的2倍 执行计划所需挂钟时间 用于代价估算的统计信息 相关的统计信息主要包括: nr:关系r中的元组数目。 br:用于存储关系r所有元组的块数目。 sr:关系r中一个元组的大小。 fr:关系r的块因子,即一个物理块中能存放的关系r的元组数目。 V(A, r):关系r中属性A所具有的不同值的数目,该数目与∏A(r)的大小相同。若A为关系r的码,则V(A, r)=nr。 SC(A, r):关系r关于属性A的选择度,表示在属性A上满足某个等值条件(假设至少有一条记录满足该等值条件)的平均记录数。 用于代价估算的统计信息 fi : 索引i 的内节点的平均扇出, 适用于树结构索引,如B+树 HTi :索引i 的层数 — 即高度 对于关系r上A 属性的平衡树索引 (如B+-树), HTi = ?logfi(V(A,r))? 对于散列索引, HTi 为1 LBi :索引i 的底层索引块数 — 即索引叶子层的块数 查询代价估计举例 查询实例: 求选修2号课程的学生姓名 SQL表示: select Sname from Students, SC where Students.Sno = SC.Sno and Cno = ‘2’; 数据库模式的样例 Students ( Sno, Sname, Ssex, Sage, Sdept) SC ( Sno, Cno, Grade) 假定学生-课程数据库中有1000个学生记录,10000

文档评论(0)

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

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

1亿VIP精品文档

相关文档