资源描述:
《第四章全局查询处理和优化.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第四章分布查询处理和优化主要内容查询处理基础查询处理器查询分解数据局部化片段查询的优化优化目标优化就是寻找执行代价(费用和时间)最小的查询执行策略,使系统执行效率降到最低。优化的目标就是指局部执行代价和网络传输代价的和最小。局部执行代价:主要指输入/输出次数(I/O代价)及CPU处理代价。网络传输代价:主要指传输启动代价和数据传输代价。4.1查询处理的基础影响查询处理效率的因素有:网络传输代价(数据量和延迟等)、局部I/O代价及CPU使用情况代价等,但主要由网络通信代价和局部I/O代价来衡量。不同的分
2、布式数据库系统可能对评估查询处理的传输代价和I/O代价的侧重不同。4.1.1查询处理目标4.1.2查询优化的意义例1:求选修2号课程的学生姓名SQL表示:selectSnamefromStudents,SCwhereStudents.Sno=SC.SnoandCno=‘2’;关系代数表示:Q1=sname(Students.Sno=SC.SnoandCno=‘2’(StudentsSC))Q2=sname(Cno=‘2’(StudentsSC))Q3=sname(StudentsCn
3、o=‘2’(SC))代价计算Q1代价计算(仅考虑I/O代价)计算广义笛卡尔积代价-假定:在内存中,存放5块Students元组和一块SC元组,一块可以装10个Students元组或100个SC元组.-假定:Students有1000个元组,SC有10000个元组,其中选2号课程的有50个元组-数据只有读到内存才能进行连接Q1=sname(Students.Sno=SC.SnoandCno=‘2’(StudentsSC))10100SCStudents5块通过读取块数计算I/O代价读取块数计算方法
4、:Students1000个元组SC10000个元组读取总块数:若每秒读写20块,则花费:10100SCStudents5块Student块数Student读入内存的次数SC块数Q1=sname(Students.Sno=SC.SnoandCno=‘2’(StudentsSC))条件:Students1000个元组,SC10000个元组笛卡尔集计算后的元组个数为:103104=107连接后的中间结果内存放不下,需暂时写到外存若每块可装10个完成笛卡尔集后的元组,则写这些元组需:(107/10)
5、/20=5104s选择操作:读回需5104s,假设选择后剩50个元组,均可放在内存投影操作:查询共花费:105+25104105s28小时10100SCStudents5块每秒读20块Q1=sname(Students.Sno=SC.SnoandCno=‘2’(StudentsSC))Q2=sname(Cno=‘2’(StudentsSC))Q2代价计算(仅考虑I/O代价)计算自然连接代价也要把数据读到内存进行连接,但连接结果比笛卡尔积要小得多读取块数依然为:花费为2100/2
6、0105s假设连接结果大小为104个元组,写到外存需:(104/10)/20=50s每秒读20块Q2=sname(Cno=‘2’(StudentsSC))读取自然连接结果,执行选择运算,需50s,选择结果均可放在内存投影运算:总花费为:105+50+50=205s3.4分钟Q3代价计算(仅考虑I/O代价)计算对SC做选择运算的代价需读SC到内存进行选择运算读SC块数为:10000/100=100花费为:100/20=5s选择结果为50个SC元组,均可放在内存Q3=sname(Student
7、sCno=‘2’(SC))Q3=sname(StudentsCno=‘2’(SC))计算和Students自然连接的代价需读Students到内存进行连接运算读Students块数为:1000/10=100花费为:100/20=5s连接结果为50个元组,均可放在内存投影运算:总花费:5+5=10s1050SCStudents5块数据分布存储示例Site1Site2Site3Site4QuerySite5S1=5000S2=5000SP1=50000SP1=50000S的网络传输速度为:20个
8、元组/秒SP的网络传输速度为:50个元组/秒局部操作代价是:104个元组/秒通信延迟为1秒SUPPLIER(SNO,SNAME,AREA)SUPPLY(SNO,PNO,QTY)1)从场地1、场地2传输S1、S2到场地51+104/20=501(s)2)从场地3、场地4传输SP1、SP2到场地51+105/50=2001(s)3)在场地5对SP表执行选择操作pno>100105/104=10(s)4)设选择后结果为SP’,有100个元组,则S和SP’执行连