第四章全局查询处理和优化

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算和Students自然连接的代价
• 需读Students到内存进行连接运算 • 读Students块数为: 1000/10=100 • 花费为: 100/20=5s • 连接结果为50个元组, 均可放在内存 Students • 投影运算: 10
总花费: 5+5=10s
SC 50
5块
数据分布存储示例
Q3代价计算(仅考虑I/O代价)
计算对SC做选择运算的代价 • 需读SC到内存进行选择运算 • 读SC块数为: 10000/100=100 • 花费为: 100/20=5s • 选择结果为50个SC元组, 均可放在内存
Q3= sname( Students Cno=‘2’(SC))
条件:Students 1000个元组, SC 10000个元组
• 笛卡尔集计算后的元组个数为: 103 104=107 • 连接后的中间结果内存放不下, 需暂时写到外存 • 若每块可装10个完成笛卡尔集后的元组, 则写这些元组需: • (107 /10)/20=5 104s
• 选择操作: 读回需5 104s, 假设选择后剩50个元组,均可放在内存 • 投影操作: 每秒读20块 • 查询共花费:
4.1.1 查询处理目标
影响查询处理效率的因素有:网络传输代价(数据量 和延迟等)、局部I/O代价及CPU使用情况代价等, 但主要由网络通信代价和局部I/O代价来衡量。不同 的分布式数据库系统可能对评估查询处理的传输代价 和I/O代价的侧重不同。
4.1.2 查询优化的意义
例1: 求选修2号课程的学生姓名
( SS ) ( S P S P ) 1 2 s n o P N O 1 0 0 1 2
1)从场地1、场地2传输S1、S2到场地5 1+104/20=501(s) 2)从场地3、场地4传输SP1、SP2到场地5 1+105/50=2001(s) 3)在场地5对SP表执行选择操作pno>100 105/104=10(s) 4)设选择后结果为SP’,有100个元组,则S和SP’ 执行连接操作的时间 104×100/104=100(s) 因此,这种操作的执行代价是2612s.
S1=5000
SUPPLIER(SNO,SNAME,AREA) SUPPLY(SNO,PNO,QTY)
S2=5000
S ( S U P P I E R ) 1 S N O " X "

S ( S U P P I E R ) 1 S N O " X "

Site2
Site1
SP1=50000
Query
Site5
SP1=50000
S ( S U P P L Y ) 1 S N O "" X

S ( S U P P L Y ) 1 S N O "" X

Site4
Site3
• S的网络传输速度为:20个元组/秒 • SP的网络传输速度为:50个元组/秒 • 局部操作代价是:104个元组/秒 • 通信延迟为1秒
-假定: Students有1000个元组,SC有 10000个元组, 其中选2号课程的有50 个元组 -数据只有读到内存才能进行连接
Students SC 10 100
5块
Q1= sname(Students.Sno=SC.Sno and Cno=‘2’(StudentsSC))
通过读取块数计算I/O代价 读取块数计算方法: Student 读入内存 Students 1000个元组 的次数 SC Leabharlann Baidu0000个元组
第四章 分布查询处理和优化
主要内容
查询处理基础 查询处理器 查询分解 数据局部化 片段查询的优化
4.1 查询处理的基础
优化目标 优化就是寻找执行代价(费用和时间)最小的查 询执行策略,使系统执行效率降到最低。优化的 目标就是指局部执行代价和网络传输代价的和最 小。


局部执行代价:主要指输入/输出次数(I/O代价)及 CPU处理代价。 网络传输代价:主要指传输启动代价和数据传输代价。
• 读取总块数:
Student 块数 SC块数
Students 10 5块
SC 100
1 0 0 01 0 0 01 0 0 0 0 1 0 02 0 1 0 02 1 0 0 1 0 1 0 51 0 0
• 若每秒读写20块, 则花费:
2100 105s 20
Q1= sname(Students.Sno=SC.Sno and Cno=‘2’(StudentsSC))
105+2 5
104

105
s 28小时
Students 10
SC 100
5块
Q2= sname(Cno=‘2’(Students SC))
Q2代价计算(仅考虑I/O代价)
计算自然连接代价 • 也要把数据读到内存进行连接, 但 连接结果比笛卡尔积要小得多 0 0 01 0 0 01 0 0 0 0 • 读取块数依然为: 1 1 0 02 0 1 0 02 1 0 0 1 0 1 0 51 0 0 花费为2100/20105s • 假设连接结果大小为104个元组, 写到外存需: (104 /10)/20=50s
SQL表示: select Sname from Students, SC where Students.Sno=SC.Sno and Cno=‘2’; 关系代数表示: Q1= sname(Students.Sno=SC.Sno and Cno=‘2’(StudentsSC)) Q2= sname(Cno=‘2’(Students SC)) Q3= sname( Students Cno=‘2’(SC))
每秒读20块
Q2= sname(Cno=‘2’(StudentsSC)) • 读取自然连接结果, 执行选择运算, 需50s, 选择结果均可 放在内存 • 投影运算: • 总花费为: 105+50+50=205s 3.4分钟 Q3= sname( Students Cno=‘2’(SC))
Q1= sname(Students.Sno=SC.Sno and Cno=‘2’(StudentsSC))
代价计算
Q1代价计算(仅考虑I/O代价)
计算广义笛卡尔积代价 -假定: 在内存中, 存放5块Students元组 和一块SC元组, 一块可以装10个 Students元组或100个SC元组.
相关文档
最新文档