分布式数据库中的查询处理和优化.

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 分布式数据库中的查询处 理和优化
2008.9
第三章 分布式数据库中的查询处理和 优化
分布式查询优化概述 分布式查询优化中的基础知识 分布式查询优化的分类与层次结构 基于关系代数等价变换的查询优化处理 基于半连接的查询优化处理 基于直接连接算法的查询优化处理
分布式查询优化概述
查询代价分析
• 远程通信网络中,各站点间数据传输速率比单机中内 存与磁盘的数据传输速率慢很多倍,因此本地处理时 间可以忽略不计,减少通信代价成为主要目标 • 高速局域网中,传输时间比局部处理时间短很多,局 部处理时间是关键
分布式查询优化的准则和代价估算(续)
查询代价估算
• 查询执行的预期代价QC,则
分布式查询优化的目标 分布式查询优化的准则和代价估算 分布式查询策略的重要性
分布式查询优化的目标
总代价最小(CPU代价、I/O代价、网络传输代 价) 每个查询的查询响应时间最短
分布式查询优化的准则和代价估算
查询优化准则
• 通信费用最低:通信费用与所传输的数据量和通信次 数成正比 • 响应时间最短:从接收查询到完成查询所需要的时间, 既与通信时间有关,也与局部处理时间有关
用关系代数表达式表示一个查询
• 关系代数的五种基本运算:并(∪)、交( ∩ )、笛卡尔 积( × )、选择( σ )、投影( π ) • 关系代数的基本导出操作:差(-)、除(÷)、 θ连接 (∞θ)、自然连接(∞)、半连接(∝)
例如:教学数据库中,查找选修课程号为’C03’的学 生姓名 用关系代数表达式表示为
分布式查询策略的重要性
查询优化包括 • 查询策略优化 • 局部处理优化 例: 在教学数据库中,有 S(S#,SNAME,AGE,SEX)有10000元组,在站点A存放 C(C#,CNAME,TEACHER)有100000元组,在站点B存放 SC(S#,C#,GRADE)有1000000元组,在站点A存放 假设每个元组为100b,通信系统的传输速率为1000b/s,通信延迟时间为1s 问题:查找所有选修’MATHS’课的男学生的学号和姓名 在分片透明性的DDBMS的支持下,SQL语句为: SELECT S#,SNAME FROM S,SC,C WHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX=‘M’ AND CNAME=‘MATHS’ 通信代价的估算公式: T=传输延迟时间C0+(传输的数据量X*数据传输率C1) =(传输次数*1)+(传输的bit数/1000)
• 策略6:在B站点求出C=‘MATHS’的元组,有10个,再把结果传回A站点,在A站 点执行查询操作
T6=(1+10*100/1000)秒=2秒
AB 策略Leabharlann 通信1次,S,SCC
传输10个元组
3.2 分布式查询优化基础知识
用关系代数表达式和SQL语句表示一个查询 查询树 等价变换规则的概念和术语 等价变换规则
集中式:QC=I/O代价+CPU代价 分布式: QC=I/O代价+CPU代价+通信代价 • 通信代价TC(X)=C0+C1*X • X是传输量,以bit为单位,C0是两点间一次通信初始化所花费的
时间,近似一个常数,以秒为单位;C1为传输率(传输速率的倒 数),即:单位数据传输的时间,单位是b/s。
该查询可以有6种不同的查询策略
• 策略1:把关系C传输到A站点,在A站点处理查询
T1=1+(10000*100/1000)秒=16.7分钟
A
B
传C
通信1次 S,SC
策略1 C
• 策略2:把关系S和SC传输到B站点,在B站点处理查询
T2=2+((1000*100+1000000*100)/1000)秒=28小时
• • • • E1= πsname( σs.s#=sc.s#∧sc.c#=‘c03’(s ×sc)) E2= πsname( σs.s#=sc.s# (s × (σsc.c#=‘c03’(sc)))) E3= πsname( s ∞(σsc.c#=‘c03’(sc))) E1效率最差,E3效率最高,E2效率居中
用关系代数表达式和SQL语句表示一个查询
用SQL表示一个查询:select语句,例如:教学数据 库中,查找选修课程号为’C03’的学生姓名
• SELECT SNAME FROM S,SC WHERE S.S#=SC.S# AND C#=‘C03’ • SELECT SNAME FROM S WHERE S.S# IN (SELECT SC.S# FROM SC WHERE C#=‘C03’)
• 策略4:在B站点求出C=‘MATHS’的元组,有10个,再根据满足条件的元组的C# 值询问A地的S与SC连接,核实是否为男生
T4=(2*10)秒=20秒
A
B 策略4 通信20次,
S,SC
C
问答各10次
• 策略5:在A站点查询出男学生的选课元组,有100000满足条件的元组,再将结果 传输到B站点,在B站点查找满足C=‘MATHS’的元组。 • T5=1+(100000*100/1000)秒=16.7分钟 A B 策略5 S,SC 通信1次,传输 100000元组 C
A
传S和SC 通信2次
B 策略2
S,SC
C
• 策略3:在A站点查询出男学生的成绩元组,有100000满足条件的元组,再将每个 元组的C#的值传输到B站点,从中核实C=‘MATHS’是否满足,将结果传回A站点。 • T3=(2*100000*1+100/1000)秒=23天 A B 策略3 通信200000次, S,SC 问答各100000次 C
查询树
查询树的叶节点是已知的关系,中间节点是关系代数 操作符,树的根是查询结果。
π sname σS.s#=sc.s#∧sc.c#=‘c03’ × S SC π sname π sname σS.s#=sc.s#

× S σ sc.c#=‘c03’ SC
S σ sc.c#=‘c03’
相关文档
最新文档