欢迎来到天天文库
浏览记录
ID:50322707
大小:1.52 MB
页数:68页
时间:2020-03-08
《数据库系统教程 教学课件 作者 何玉洁 李宝安 第14章 查询处理与优化.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、数据库系统教程第14章查询处理与优化1第14章查询处理与优化14.1概述14.2关系数据库的查询处理14.3代数优化14.4物理优化*214.1概述查询处理:从查询语句出发到获得最终的查询结果所进行的处理过程查询优化:SQL是非过程化语言,即仅表达查询要求,而不用说明查询执行过程。由DBMS来确定合理的、有效的执行策略的过程。*3查询优化途径代数优化:通过改变查询语句的操作顺序,使查询语句执行起来更有效。物理优化:根据系统提供的存取路径,选择最合理的存取策略。规则优化:仅根据启发式规则,选择执行策略,如先做选择、投影,后做连
2、接操作代价估算优化:对可供选择的执行策略执行代价估算,从中选出代价最小的策略。*414.2关系数据库的查询处理查询处理的任务是把用户提交给RDBMS的查询语句转换为高效的查询执行计划。14.2.1查询处理步骤14.2.2优化的一个简单示例*514.2.1查询处理步骤查询处理是将高层查询(比如SQL)转换为一个低层语义表达的正确并且有效的执行计划的过程,低层语义完成对数据库的检索和操作。*6查询处理步骤语法检查。解析查询语句并检查它是否符合语法规则,用系统表(数据字典)中已有的视图、表和列来匹配查询语句中的对象。验证用户是否有
3、合适的权限并且操作不违反所有相关的完整性约束。执行查询计划。*7查询处理的典型过程14.2.2优化的一个简单示例查询选修了“C001”号课程的学生的姓名。SQL语句:SELECTSnameFROMStudentSJOINSCONS.Sno=SC.SnoWHERECno='C001'*9对应的几个关系代数表达式Q1=∏Sname(σStudent.Sno=SC.Sno(Student×SC))Q2=∏Sname(σSC.Cno=‘C001’(StudentSC))Q3=∏Sname(StudentσSC.Cno=‘C001’(
4、SC))设数据库中有1000个学生记录,10000个选课记录,其中选了“C001”课程的选课记录有50个。*10一般的连接做法在内存中尽可能多地装入某个表(比如Student)的若干块,并留出一块存放另一个表(比如SC)的元组。把SC中的每个元组与Student的每个元组进行连接,连接后的元组装满一块后就写到中间文件上,再从SC表中读入一块数据。再和内存中的Student元组进行连接,直到SC表处理完。再读入若干块Student元组,读入一块SC元组。重复上述处理过程,直到处理完Student表的所有元组。*11一些假设假设
5、一块能装10个Student元组或100个SC表的元组。设在内存中最多可存放5块Student表数据和1块SC表数据。设每秒能读写20块。设每块能装10个连接后的元组。*12Q1的执行过程进行广义笛卡尔积操作进行选择操作进行投影操作*13(1)广义笛卡尔积操作开销读取的总块数为:1000/10+1000/(10×5)×10000/100=100+20×100=2100(块)该过程总共花费时间:2100/20=105秒Student和SC表连接后的元组数:1000×10000=107写出这些连接后的元组花费时间:(107/10
6、)/20=5×104秒*14(2)选择操作开销依次读入连接后的元组,选取满足选择条件的元组。假定忽略内存处理时间,则这一步读取存放连接结果的中间文件需花费的时间同写中间文件一样,也是5×104秒。由于满足条件的元组只有50个,因此均可放在内存中。*15(3)投影操作开销对连接得到的结果再在Sname列上进行投影,得到最终结果。这个步骤由于不需要读写磁盘,因此,时间忽略不计。则Q1的总执行时间约为:105+2×5×104≈105(秒)*16Q2的执行过程进行自然连接操作进行选择操作进行投影操作*17(1)自然连接操作开销总的读
7、取块数仍为2100块,需要105秒但自然连接的结果比Q1大大减少,为:10000=104个(即SC表元组数)。因此,写出这些元组需要的时间为:(104/10)/20=50(秒)仅为Q1执行时间的千分之一。*18其他两个操作开销选择操作开销读取中间文件块,同写元组一样,也是50秒。投影操作开销对第2步的结果在Sname列上进行投影,花费时间忽略不计。则Q2的总执行时间约为:105+50+50≈205(秒)*19Q3的执行过程对SC表进行选择运算进行自然连接操作对连接的结果进行投影操作*20选择和连接运算开销选择运算开销只需读一
8、遍SC表,共计100块数据,花费时间:100/20=5(秒)。由于满足条件的元组仅有50个,因此不必使用中间文件。自然连接开销只需读一遍Student表,共计100块,花费时间:100/20=5(秒)。*21投影操作开销对第2步的结果在Sname列上进行投影,花费时间忽略不计。则Q3的总执
此文档下载收益归作者所有