




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第13讲:(第11章) 查询处理(查询优化)1课程名称: 数据库系统 -重庆大学计算机学院查询优化在关系数据库系统中有着非常重要的地位 关系查询优化是影响RDBMS性能的关键因素 由于关系表达式的语义级别很高,使关系系统可以从关系表达式中分析查询语义,提供了执行查询优化的可能性 2关系数据库系统的查询优化查询优化的优点不仅在于用户不必考虑如何最好地表达查询以获得较好的效率,而且在于系统可以比用户程序的“优化”做得更好 (1) 优化器可以从数据字典中获取许多统计信息,而用户程序则难以获得这些信息(2)如果数据库的物理统计信息改变了,系统可以自动对查询重新优化以选择相适应的执行计划。在非关系系统中
2、必须重写程序,而重写程序在实际应用中往往是不太可能的。3查询优化概述(3)优化器可以考虑数百种不同的执行计划,程序员一般只能考虑有限的几种可能性。(4)优化器中包括了很多复杂的优化技术,这些优化技术往往只有最好的程序员才能掌握。系统的自动优化相当于使得所有人都拥有这些优化技术4查询优化概述RDBMS通过某种代价模型计算出各种查询执行策略的执行代价,然后选取代价最小的执行方案集中式数据库执行开销主要包括:磁盘存取块数(I/O代价)处理机时间(CPU代价)查询的内存开销 I/O代价是最主要的 分布式数据库总代价=I/O代价+CPU代价+内存代价通信代价 5查询优化概述1. 将查询转换成某种内部表示
3、,通常是语法树2. 根据一定的等价变换规则把语法树转换成标准 (优化)形式3. 选择低层的操作算法对于语法树中的每一个操作计算各种执行算法的执行代价选择代价小的执行算法4. 生成查询计划(查询执行方案)查询计划是由一系列内部操作组成的。6实际系统的查询优化步骤例 求选修了2号课程的学生姓名。用SQL表达: SELECT Student.Sname FROM Student,SC WHERE Student.Sno=SC.Sno AND SC.Cno=2; 假定学生-课程数据库中有1000个学生记录,10000个选课记录其中选修2号课程的选课记录为50个 7系统可以用多种等价的关系代数表达式来完
4、成这一查询Q1=Sname(Student.Sno=SC.SnoSc.Cno=2 (StudentSC)Q2=Sname(Sc.Cno=2 (Student SC)Q3=Sname(Student Sc.Cno=2 (SC)8一、第一种情况 Q1=Sname(Student.Sno=SC.SnoSc.Cno=2 StudentSC)1. 计算广义笛卡尔积 (嵌套循环连接算法)把Student和SC的每个元组连接起来的做法:在内存中尽可能多地装入某个表(如Student表)的若干块,留出一块存放另一个表(如SC表)的元组。把SC中的每个元组和Student中每个元组连接,连接后的元组装满一块后就
5、写到中间文件上从SC中读入一块和内存中的Student元组连接,直到SC表处理完。再读入若干块Student元组,读入一块SC元组重复上述处理过程,直到把Student表处理完9设一个块能装10个Student元组或100个SC元组,在内存中存放5块Student元组和1块SC元组,则读取总块数为 =100+20100=2100块其中,读Student表100块。读SC表20遍,每遍100块。若每秒读写20块,则总计要花105s 连接后的元组数为103104=107。设每块能装10个元组,则写出这些块要用107/20/10=5104s 102. 作选择操作 依次读入连接后的元组,按照选择条件选
6、取满足要求的记录 假定内存处理时间忽略。读取中间文件花费的时间(同写中间文件一样)需5104s 满足条件的元组假设仅50个,均可放在内存 113. 作投影操作 把第2步的结果在Sname上作投影输出,得到最终结果 第一种情况下执行查询的总时间105+25104105s所有内存处理时间均忽略不计 12二、 第二种情况 Q2=Sname(Sc.Cno=2 (Student SC)1. 计算自然连接 执行自然连接,读取Student和SC表的策略不变,总的读取块数仍为2100块花费105 s 自然连接的结果比第一种情况大大减少,为104个 写出这些元组时间为104/10/20=50s,为第一种情况的
7、千分之一 2. 读取中间文件块,执行选择运算,花费时间也为50s。3. 把第2步结果投影输出。 第二种情况总的执行时间105+50+50205s 13三、 第三种情况 Q3=Sname(Student Sc.Cno=2(SC)1. 先对SC表作选择运算,只需读一遍SC表,存取100块花费时间为5s,因为满足条件的元组仅50个,不必使用中间文件。2. 读取Student表,把读入的Student元组和内存中的SC元组作连接。也只需读一遍Student表共100块,花费时间为5s。3. 把连接结果投影输出 第三种情况总的执行时间5+510s 14假如SC表的Cno字段上有索引第一步就不必读取所有的
8、SC元组而只需读取Cno=2的那些元组(50个)存取的索引块和SC中满足条件的数据块大约总共34块若Student表在Sno上也有索引第二步也不必读取所有的Student元组因为满足条件的SC记录仅50个,涉及最多50个Student记录读取Student表的块数也可大大减少 总的存取时间将进一步减少到数秒 15把代数表达式Q1变换为Q2、 Q3,即有选择和连接操作时,先做选择操作,这样参加连接的元组就可以大大减少,这是代数优化在Q3中SC表的选择操作算法有全表扫描和索引扫描2种方法,经过初步估算,索引扫描方法较优 对于Student和SC表的连接,利用Student表上的索引,采用index
9、 join代价也较小,这就是物理优化 16代数级优化通过关系代数表达式的等价变换进行优化物理级优化涉及存取路径的优化17查询优化18一 概述year = 2009 year = 2009select name,title from instuctor,teaches,coursewhere instructor.ID=teaches.ID and teaches.course_id=course.course_id and instructor.dept_name=Music and year=2009SQL转换为关系代数关系代数转换为查询树(表示式树)查询树变换某一颗最优树(执行效率最佳)这
10、两棵树为等价表达式但它们的执行效果不同(关键任务)操作执行次序查询优化任务及过程p.293图11-11name, title(dept_name= “Music”year = 2009 (instructor (teaches course_id, title (course)19优化的查询树查询执行计划流水线-合并执行流水线-合并执行201.用于表达式转换的等价规则1.Conjunctive合取 selection operations can be deconstructed into a sequence of individual selections.2.Selection oper
11、ations are commutative交换3.Only the last in a sequence of projection operations is needed, the others can be omitted. (前提:属性组L1,L2,L3,逐一被后者包含) Selections can be combined with Cartesian products and theta joins.(E1 X E2) = E1 E2 (为多个属性上的连接条件,而非一般选择条件)1(E1 2 E2) = E1 1 2 E2 (1和2为多个属性上的连接条件)关系表达式的等价转换依次
12、选择等同同时选择!选择的交换律!多次投影等同末投影!选择条件与笛卡尔结合等效于连接 !选择条件可结合到连接中 !215.Theta-join operations (and natural joins) are commutative.E1 E2 = E2 E16.(a) Natural join operations are associative结合: (E1 E2) E3 = E1 (E2 E3)(b) Theta joins are associative in the following manner: (E1 1 E2) 2 3 E3 = E1 1 3 (E2 2 E3) wher
13、e 2 involves attributes from only E2 and E3, (and 1 involves attributes from only E1 and E2 )(等值)连接的交换律!自然连接的结合律!连接的结合律!等价规则(续1)22等价规则(续2)The selection operation distributes over the theta join operation under the following two conditions:(a) When all the attributes in 0 involve only the attributes
14、of one of the expressions (E1) being joined. 0E1 E2) = (0(E1) E2 (b) When 1 involves only the attributes of E1 and 2 involves only the attributes of E2. 1 E1 E2) = (1(E1) ( (E2)选择对连接的分配律!选择涉及单个关系时!选择涉及两个关系时!23等价规则(续3)8.The projection operation distributes over the theta join operation as follows:(a)
15、 if involves only attributes from L1 L2:(b) Consider a join E1 E2. Let L1 and L2 be sets of attributes from E1 and E2, respectively. Let L3 be attributes of E1 that are involved in join condition , but are not in L1 L2, and let L4 be attributes of E2 that are involved in join condition , but are not
16、 in L1 L2.)()()(21212121EEEELLLL=qq)()()(212142312121EEEELLLLLLLL=qq投影对连接的分配律!不仅涉及投影属性时!仅涉及投影属性时!(连接涉及的L1之外 E1的其它属性)(连接涉及的L2之外 E2的其它属性)24等价规则(续4)The set operations union and intersection are commutative E1 E2 = E2 E1 E1 E2 = E2 E1 (set difference is not commutative).Set union and intersection are as
17、sociative. (E1 E2) E3 = E1 (E2 E3) (E1 E2) E3 = E1 (E2 E3)The selection operation distributes over , and . (E1 E2) = (E1) (E2) and similarly for and in place of Also: (E1 E2) = (E1) E2 and similarly for in place of , but not for 12.The projection operation distributes over union L(E1 E2) = (L(E1) (L
18、(E2) 并操作的交换律!交操作的交换律!并操作的结合律!交操作的结合律!投影对并的分配律!选择对并-交-差的分配律!25等价规则的图示化连接的交换律!自然连接的结合律!选择对连接的分配律!选择涉及单个关系时!26“选择下移”优化策略Query: Find the names of all instructors in the Music department who have taught a course in 2009, along with the titles of the courses that they taughtname, title(dept_name= “Music”y
19、ear = 2009 (instructor (teaches course_id, title (course)Transformation using join associatively (Rule 6a):name, title(dept_name= “Music”year = 2009 ( (instructor teaches) course_id, title (course) )Second form provides an opportunity to apply the “perform selections early” rule, resulting in the su
20、bexpression name, title( (dept_name = “Music” (instructor) year = 2009 (teaches) course_id, title (course) ) 查询树优化过程(图示法)将选择操作下移!使两关系元组变少!为下移选择操作做准备!三 查询树的启发式优化策略27“选择下移”查询树优化过程优化前、后的查询树有何不同?将选择操作下移!(使关系变小)282. “投影下移”优化策略Consider: name, title( dept_name= “Music” (instructor) teaches) course_id, titl
21、e (course)When we computedept_name = “Music” (instructor) teacheswe obtain a relation whose schema is:(ID, name, dept_name, salary, course_id, sec_id, semester, year)Push projections using equivalence rules 8a and 8b; eliminate unneeded attributes from intermediate中间 results to get:name, title(name,
22、 course_id (dept_name= “Music” (instructor) teaches) course_id, title (course)Performing the projection as early as possible reduces the size of the relation to be joined. 查询树优化过程(图示法)id含8个属性的大关系!course_id含2个属性的小关系!id29“投影下移”查询树优化过程dept_name= “Music”name, titlecourse_id, titleinstructorteachescourse
23、dept_name= “Music”name, titlecourse_id, titleinstructorteachescoursename, course_id优化前、后的查询树有何不同?投影操作下移时,增加了一个投影!(使关系列数变少)三 查询树的基本优化策略303. “选择连接顺序”优化策略Consider the expression :name, title( dept_name= “Music” (instructor) teaches) course_id, title (course)Could compute: teaches course_id, title (cour
24、se) first, and then join result with dept_name= “Music” (instructor) ? but the result of the first join is likely to be a large relation.Only a small fraction of the universitys instructors are likely to be from the Music department it is better to compute dept_name= “Music” (instructor) teaches first. 查询树优化过程(图示法)3)“选择连接”次序有何优化效果?是先做teaches course好?还是instructor teaches?优化策略是:小关系的连接应优先(使中间元组数更小)连接结果(记录数)更大连接结果(记录数)较小31“选择连接顺序”查询树优化过程dept_name= “Music”name, titlecourse_id, titleinstructorteachescoursedept_name= “Music”name, titlecourse_id, titleinstructorteachescourse结果小的 连接操作应优先先做!(使中间结果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单位橱柜采购合同范例
- 劳务派遣合同范例合同解除
- 原料售出合同范例
- 买车车位合同范例
- 叉车包合同范例
- 劳动纠纷解除合同范例
- 一承包农田合同范例
- 医院被服采购合同范例
- 供沙子水泥合同范例
- 印刷公司购销合同范例
- (正式版)JTT 1499-2024 公路水运工程临时用电技术规程
- 《化妆品技术》课件-粉块腮红
- 小学第三学段培养数学模型意识研究-以南昌市A小学为例
- 钢铁制造公司合伙人入伙协议书
- 肺孢子菌肺炎新课件
- 高纯碳酸锂行业报告
- 天然气消防培训课件
- 2024年西安印钞有限公司招聘笔试参考题库含答案解析
- 普外科题库完
- 服装工业打板与推板课件
- 1.2研究有机化合物的一般方法教学设计高二下学期化学人教版选择性必修3
评论
0/150
提交评论