资源描述:
《关系系统及其优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章:关系系统及其查询优化关系系统的定义和分类查询处理关系系统中的查询优化关系系统的定义关系系统:支持关系数据模型的数据库管理系统(粗略)关系系统(确切定义):一个系统可以定义为一个关系系统,当且仅当它:支持关系数据库支持选择、投影和连接运算(自然连接),对这些运算不要求定义任何物理存取路径关系系统的分类:许多关系系统的产品按E.F.Codd的思想将关系系统分为:表式系统(a)最小关系系统(b)关系完备的系统(c)全关系系统(d)SMISMISMISMIabcdS:StructureI:IntegrityM:Manipulation关系数据
2、模型集合操作关系系统的查询处理:查询处理的步骤:queryParser&translatorRelationalalgebraexpressionOptimizerExecutionplanEvaluationengineQueryoutputdataStatisticsaboutdataDBMS为什么需要查询优化?一个查询实例:求选修2号课程的学生姓名SQL表示:selectSnamefromStudents,SCwhereStudents.Sno=SC.SnoandCno=‘2’;关系代数表示:Q1=sname(Students.Sn
3、o=SC.SnoandCno=‘2’(StudentsSC))Q2=sname(Cno=‘2’(StudentsSC))Q3=sname(StudentsCno=‘2’(SC))代价计算Q1代价计算(仅考虑I/O代价)计算广义笛卡尔积代价假定:在内存中,存放5块Students元组和一块SC元组,一块可以装10个Students元组或100个SC元组.假定:Students有1000个元组,SC有10000个元组,其中选2号课程的有50个元组数据只有读到内存才能进行连接Q1=sname(Students.Sno=SC.Snoan
4、dCno=‘2’(StudentsSC))10100SCStudents5块通过读取块数计算I/O代价读取块数计算方法:Students1000个元组SC10000个元组读取总块数:若每秒读写20块,则花费:10100SCStudents5块Q1=sname(Students.Sno=SC.SnoandCno=‘2’(StudentsSC))Student块数Student读入内存的次数SC块数条件:Students1000个元组,SC10000个元组迪卡尔集后后的元组个数为:103104=107连接后的中间结果内存放不下,需暂时写
5、到外存若每块可装10个完成迪卡尔集后的元组,则写这些元组需:(107/10)/20=5104s选择操作:读回需5104s,假设选择后剩50个元组,均可放在内存投影操作:查询共花费:105+25104105s28小时Q1=sname(Students.Sno=SC.SnoandCno=‘2’(StudentsSC))10100SCStudents5块每秒读20块Q2=sname(Cno=‘2’(StudentsSC))Q2代价计算(仅考虑I/O代价)计算自然连接代价也要把数据读到内存进行连接,但连接结果比笛卡尔积要小得多读
6、取块数依然为:花费为2100/20105s假设连接结果大小为104个元组,写到外存需:(104/10)/20=50s每秒读20块Q2=sname(Cno=‘2’(StudentsSC))Q3=sname(StudentsCno=‘2’(SC))读取自然连接结果,执行选择运算,需50s,选择结果均可放在内存投影运算:总花费为:105+50+50=205s3.4分钟Q3代价计算(仅考虑I/O代价)计算对SC做选择运算的代价需读SC到内存进行选择运算读SC块数为:10000/100=100花费为:100/20=5s选择结果为50个SC元
7、组,均可放在内存Q3=sname(StudentsCno=‘2’(SC))计算和Students自然连接的代价需读Students到内存进行连接运算读Students块数为:1000/10=100花费为:100/20=5s连接结果为50个元组,均可放在内存投影运算:总花费:5+5=10s1050SCStudents5块关系系统的查询优化:关系系统的查询优化由系统完成,而不是由用户完成优化器可以从数据字典获取许多统计信息如果数据库的物理统计信息改变了,优化器可以对查询进行重新优化以选择适应的执行计划优化器可以考虑数百种不同的执行计划优化器包
8、括了许多复杂的技术优化目标:寻求最优的执行计划,使查询执行开销尽量小关系系统的查询优化:查询优化的一般步骤将查询转化成内部表示--语法树根据等价变化规则,将语法树转