第五章分布查询的存取优化PPT课件_第1页
第五章分布查询的存取优化PPT课件_第2页
第五章分布查询的存取优化PPT课件_第3页
第五章分布查询的存取优化PPT课件_第4页
第五章分布查询的存取优化PPT课件_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,第五章 分布查询的存取优化,2,分布式查询处理概述,3,查询存取优化 输入:片段查询 找到好的(不必最优的)全局调度 最小代价函数 分布Join处理 稠密树与线性树 需要传输的关系 全部传输与按需传输 确定使用半连接 使用半连接可减少通信代价 Join方法 嵌套循环与顺序join(合并join与hash join),分布式查询处理概述,4,基于代价的优化 搜索空间(Solution space) 等价的代数表达式 (query trees). 代价函数(Cost function) I/O 代价 + CPU 代价+ communication代价 不同的分布环境中各因素权重不同 (LAN

2、vs WAN). 最大吞吐量 搜索算法(Search algorithm) 如何在解决空间中移动 穷举搜索,启发式算法 (递归改进、模拟退火、遗传法等),分布式查询处理概述,5,查询优化 最小化查询代价,查询优化过程,分布式查询处理概述,6,分布式查询处理概述,搜索空间(Search Space) 搜索空间由可选择的执行计划描述 侧重Join树 若存在n个关系,有O(N!)等价的Join树 例如, select ENAME,RESP From EMP,ASG,PROJ Where EMP.ENO=ASG.ENO And ASG.PNO=PROJ.PNO,7,分布式查询处理概述,搜索空间(Sea

3、rch Space) 由启发式规则约束 如一元操作先于二元操作执行 约束join树的形状 只考虑线性树而忽略了稠密树,线性join树:,稠密join树:,8,搜索策略(Search Strategy) 如何在搜索空间中构建查询计划 确定的(Deterministic) 开始于基关系,每步加一个关系构建执行计划 动态规划法:宽度优先(breadth-first) 贪婪法: 深度优先(depth-first)(只构造一个计划) 随机的(Randomized) 从一个特定的点起始搜索最优执行计划 (首先应用贪婪法构建一个或多个执行计划,接着通过邻居关系替换来改进执行计划) 综合考虑优化时间和执行时间

4、 适合大于 5-6 个关系 模拟退化(Simulated annealing) 递归改进(Iterative improvement),构造所有可能的执行计划; 尽早剪裁不是优化的计划; Is also exhaustive; 关系数少时,优化代价可接受;,分布式查询处理概述,9,随机的(Randomized) 随机交换操作关系,搜索策略(Search Strategy) 确定的(Deterministic) 从基关系开始,每步联接一个或多个关系,直到获得全部的计划,分布式查询处理概述,10,分布查询的存取优化,基本概念 优化的理论基础 半联接优化方法 SDD-1 系统优化技术 枚举法优化技术

5、 集中的查询优化(CENTRALIZED QUERY OPTIMIZATION),11,基本概念,分布执行过程实际上就是从查询场地发出查询命令、从数据源获取数据、确定最佳的执行场地和返回执行结果的过程。,查询场地:指发出查询命令和存储最终查询结果的场地。查询场地也称最终结果文件。 源数据场地:指查询命令需要访问的数据副本所在的场地,可能涉及到一个或一个以上的场地。源数据场地也称源数据文件。 执行场地:指查询操作执行所在的场地。执行场地可以和查询场地或源数据场地处于同一场地,也可不处于同一场地。执行场地也称中间结果文件。,12,基本概念,分布执行策略举例 有关系EMP和DEPT。 EMPENO,

6、ENAME,BIRTH,SALARY,DNO (ENO为主键) ENO,ENAME,BIRTH,SALARY,DNO分别为雇员编号 雇员姓名 出生日期 工资 部门号 DEPTDNO,DNAME ( ENO为主键) DNO,DNAME分别为部门号,部门名称 假设: (1)EMP:元组数:10000,元组大小:100B,关系大小:100*10000=1000KB (2)DEPT:元组数:100,元组大小:35B,关系大小:35*100=3.5KB,13,假设:结果元组大小40字节,S3为查询场地 结果关系大小:40*10000=400KB,基本概念,(3) 存在三个场地,S1、S2和S3。如图:

7、查询要求:查询每个雇员的姓名及所在单位。 则:(1)SQL语句:SELECT ENAME,DNAME FROM EMP,DEPT WHERE EMP.DNO=DEPT.DNO (2)关系表达式:ENAME,DNAME(EMPDEPT),分布执行策略举例,14,分布执行策略举例-1 策略(设结果为R,以传输代价为主) 策略1: S3为执行场地,则需传输EMP、DEPT 传输量=1000K+3.5K=1003.5K 策略2: S2为执行场地,则需传输EMP到S2,结果R传 输到S3。 传输量=1000K+400K=1400K 策略3: S1为执行场地,则需传输DEPT到S1,结果R传输到S3。 传

8、输量=3.5K +400K=403.5K 从上面三个策略看,选择不同的执行场地,传输代价差别很大。应选择最低的传输代价。但组成系统的环境不同,优化的侧重点也不同。,基本概念,15,基本概念,分布查询的存取优化的目标 对于远程网,主要考虑通信开销,使通信代价最小。 对于局域网,需同时考虑通信代价和本地处理代价,使综合代价最小。 优化的内容 优化是在片段查询的基础上进行的实际物理副本查询操作的优化。具体如下: 输入:片段查询表达式 输出:分布执行计划,16,查询存取优化 内容: 确定片段查询需访问的物理副本。通常:本场地上的物理副本优先;若二元运算存在尽量选择本场地上的二元运算;数据最小的物理关系

9、应被优先选中;网络通信代价小的应优先选中 确定片段查询表达式操作执行的最优顺序。包括从叶到根的执行和同一层叶子上表达式执行的先后,特别是对查询树上的并操作和联接操作的执行次序的确定,其代价差别很大。 选择执行每个操作的方法。如:尽量将同一场地上的、同一物理副本的全部操作组合在一起统一考虑完成。,基本概念,17,存取优化的理论基础,代价函数(the total time or the response time) 总的时间(Total Time)-所有时间组件的和 减少每一个组件的时间代价 尽可能减少每个代价组件的代价 优化资源利用率,增加系统吞吐率 响应时间(Response Time)-从查

10、询开始到执行结束所用的时间 尽可能并行执行(Do as many things as possible in parallel) 增加总的活动(activity)可能会增加总时间,18,例子:,存取优化的理论基础,假设只考虑通信代价 总时间=2*消息启动时间+单位传输代价*(x+y) 响应时间=max(从1传输x到3的时间,从2传输x到3的时间),19,存取优化的理论基础,代价模型 主要指传输代价(Ccom)、I/O代价(CIO)和CPU代价(Ccpu)Total cost = Ccom+CIO+Ccpu 传输代价 费用和延迟。其中费用起决定作用。 传输费用是指使通信中的整个传输开销,即传输的

11、数据量。 模型为:CCOM(X)=C0+C1*X 其中:C0:场地间传输数据的启动所需的固定费用(启动一次),简称启动代价; C1:网络单位传输数据费用,简称单位传输代价; X:需传输的数据量。,20,存取优化的理论基础,I/O代价 模型为:CIO(X)=X/P*CIO 其中:P:页面的大小;CIO:为每页平均访问代价; X:数据量大小。 CPU代价 模型:CCPU(X)=X*CCPU 其中:CCPU:单位指令代价;X:为指令数。 通常具有下面的统计值: 广域网环境:CCOM/ CIO=20:1; 局域网环境:CCOM/ CIO=1.6:1。 可见,在广域网环境,以传输代价为主;在局域网环境,

12、需综合考虑传输代价和局部代价。,21,查询模型 主要代价因素:中间关系大小 数据库特征参数 假设R为一关系 关系的基:指关系R包含的元组个数,记为Card(R) 属性的长度:指属性A定义的取值字节数,记为Length(A) 元组的长度:关系R中每个元组的字节数,记为Length(R), Length(R)=Length(Ai) 关系的大小:关系R所包含的字节数,记为Size(R) Size(R)= Card(R)* Length(R) 属性的特征值:指关系R中属性A取值不同的属性值个数,记为Val(A) 属性A的值域:记为Dom(A) 属性A的最大值和最小值:记为Max(A)和Min(A),存

13、取优化的理论基础,22,关系运算的特征参数 假设:R、S为关系。 选择运算 (S=F(R) 选择度: 满足选择谓词F的元组与R元组总数之比,记为 基数: Card(S)=* Card(R) 关系的宽度: Length(S)= Length(R) Length(S.A)= Length(R.A),存取优化的理论基础,23,存取优化的理论基础,选择运算(中间关系大小) 选择度的具体计算方法: 等值比较 S=A=X(R),其中A是R的属性,X是常数。 则=1/Val(R, A) 非等值比较 S=AX(R)时: = (Max(A)-X)/(Max(A)-Min(A) S=AX(R)时: = (X-Mi

14、n(A)/(Max(A)-Min(A) 不等比较 S=AX(R)时: = ( Val(R, A)-1)/ Val(R, A) 多属性选择条件 S= Ci AND Cj (R)时: = i*j S= Ci OR Cj (R)时: =1-(1-i)(1-j)=( i+j -i *j),24,选择运算 (S= F(R) 不同值的个数: a.设B不属于选择谓词F,其值均匀分布。,存取优化的理论基础,Card(S) 当Card(S)Val(R, B)/2时 Val(S, B)= (Card(S)+Val(R, B)/3 当Val(R, B)/2Card(S)2Val(R, B)时 Val(R, B) 当

15、Card(S)2Val(R, B)时,b.设B属于选择谓词F 若B=X(值),则:Val(S,B)=1 若B与选择谓词F相关且为关键字, 则:Val(S,B)=* Val(R,B),25,令=0.1 则:Card(S)=* Card(R) =0.1*100=10 Card(S)=10, Val(R,B)/2=35 Card(S) Val(R,B)/2, Val(S,B)=Card(S)=10,存取优化的理论基础,选择运算 (S= F(R) 举例:设Card(R)=100,Val(R,B)=70,令=0.5 则:Card(S)=* Card(R) =0.5*100=50 Card(S)=50 ,

16、 Val(R,B)/2=70/2=35 Val(R,B)/2Card(S)2* Val(R,B), Val(S,B)=(Card(S)+ Val(R,B)/3=40,26,投影运算 (S=A(R) 基数: 如果投影涉及单个属性A:Card(S)= Val(R,A) 如果A中包含关键字:Card(S)= Card(R) 投影涉及多个属性: 关系的宽度: Length(S)=Length(Ai)(AiA) Size(S)= Card(S)* Length(S) Size(S) Size(R) 不同值的个数: Val(S,A)= Val(R,A),存取优化的理论基础,27,并、交与差(如果结果关系执

17、行消除重复操作,则都只能计算出结果关系基数的上限和下限,因此通常采用平均值作为基数的估计值。) 基数: 并运算 如果不消除重复,则结果关系基数等于两个关系基数之和: Card(T)= Card(R)+ Card(S) 如果消除重复,则结果关系基数最大可大至两个关系基数之和,最小可小至两个关系基数的大者,因此有: MaxCard(R), Card(S)Card(T)Card(R)+ Card(S) 在估计中使用中间值作为结果关系基数: (MaxCard(R), Card(S)+Card(R)+ Card(S)/2,存取优化的理论基础,28,并、交与差 基数: 交运算 交运算的结果关系最小可以是空

18、,最大可以等于两个关系的较小者,因此按取区间中间值的方法估计结果关系的基数为较小关系基数的一半: Card(T)= MinCard(R), Card(S)/2 差运算 对于两个关系的差运算R-S,其结果关系基数的区间为: Card(R)-Card(S)Card(T)Card(R) 其中Card(R)-Card(S)在S包含R中所有元组时Card(R)-Card(S)=0。 结果关系基数:Card(T)=(2Card(R)-Card(S)/2,存取优化的理论基础,29,联接运算 S=RT,(R.a=T.b) 基数:存在Card(S) Card(R) Card(T) 具体分下面几种情况: 基本计算

19、形式(为联接选择度) Card(S)=* Card(R)* Card(T) 若b为关键字,a为外来关键字 Card(S)= Card(R) 关系的宽度: Length(S)= Length(R)+ Length(T) Length(S.a)= Length(R.a),存取优化的理论基础,通常:Card(RT)=Card(R)*Card(T)/max(Val(R,a),Val(T,a),R中1个元组可能有T中的Card(T)/VAL(T,a)个元组联接,30,联接运算 S=RT,(R.a=T.b) 不同值的个数: 设a为联接属性 Val(S,a)Min(Val(R,a), Val(T,b) 若c

20、不为联接属性 Val(S,c)Val(R,c)(c为R的属性 ) Val(S,c)Val(T,c)(c为T的属性 ),存取优化的理论基础,31,半联接运算 S=RT,(R.a=T.b) 半联接操作是全联接操作的一种缩减。是一种导出操作,且具有不对称性。如:半联接操作(RT)是R与T自然连接后在R上的投影,描述为:RT=Attr(R)(R T) 存在:Card(RT)Card(R) RT TR 基数: Card(S)=* Card(R)为半联接选择度 关系的宽度:Length(S)= Length(R) 不同值的个数: a.设a为联接属性 Val(S,a)=* Val(R,a) b.若c不为联接

21、属性 Val(S,c)Val(R,c),存取优化的理论基础,(RaT)=,32,存取优化的理论基础,笛卡尔积 基数: Card(T)= Card(R)* Card(S) 元组的长度: Length(T)=Length(R)+ Length(S) 属性不同值的数量: 笛卡尔积结果关系中属性不同值的数量等于其原关系中 对应属性的不同取值的数量: Val(T, A)= Val(R, A) 或者 Val(T, A)= Val(S, A),33,对联接操作的优化有两种趋势,一种为采用半联接技术,减少联接操作的操作数,以降低传输费用;另一种为采用全联接技术,主要考虑局部代价。一个系统需根据其目标综合确定其

22、优化算法。 半联接的作用-1 采用半联接技术的优化目标是减少联接操作的操作数,以降低传输费用。,半联接优化方法,34,半联接的作用,半联接优化方法,假设有雇员关系EMP和部门关系DEPT, EMP:Card(EMP)=10000;DEPT:Card(DEPT)=100 其中,关系EMP保存在场地S1,关系DEPT保存在场地S2,如下图所示。 现有查询要求:在场地S2上查询部门名称和部门经理姓名,选择最优的执行策略,这里只考虑数据传输代价。查询的SQL语句如下: SELECT DNAME, ENAME FROM DEPT, EMP WHERE DEPT.MgrNO =EMP.ENO 关系代数表达

23、式为: Q=DNAME,ENAME(DEPTEMP),35,半联接的作用 下面通过三种查询策略分析其代价评估(COST) 策略1:执行场地设在S2 需将EMP的Eno和Ename属性传送到S2场地 COST = (Length(Eno)+Length(Ename)* Card(EMP) = 39*10000=39KB,半联接优化方法,36,半联接的作用 策略2:执行场地设在S1 需将DEPT的Dname和Mgno属性传送到S1场地,操作 后,再将结果传回场地S2。设R为结果。 COST1=(Length(Dname)+Length(Mgno)*Card(DEPT) =39*100=3.9KB

24、COST2=(Length(Dname)+Length(Ename)* Card(R) =70*100=7KB COST= COST1+ COST2=10.9KB,半联接优化方法,37,半联接的作用 策略3:采用半联接 将DEPT的Mgno属性传送到S1场地, 即将D1=Mgno(DEPT)传送到S1场地。 COST1=Length(Mgno)*Card(DEPT)=4*100=0.4KB 在场地S1。完成EMP与D1的联接,即实现E1=EMPD1, 则:Card(E1)=100。 将E1的属性Eno和Ename传到S2, 即将E2=Eno,Ename(E1)传到S2。 COST2=(Leng

25、th(Eno)+Length(Ename)* Card(E1) =39*100=3.9KB 在场地S2上计算: R=DEPT E2。 COST= COST1+ COST2=0.4+3.9=4.3 KB。 策略3相当于:EMP DEPT=(EMP DEPT)DEPT。 实现 实现,半联接优化方法,查询场地,38,半联接优化算法 输入信息:位于不同场地上的两个关系R和S 输出信息:实现RS(R.A=S.B) 算法:(设S的尺寸小于R) (1)在S所在场地上计算S=B(S); (2)传送S到R场地 (3)在R场地上计算R=RS=RS (4)将R传到S所在场地 (5)在S所在场地上计算 RS =(RS

26、)S= RS,半联接优化方法,39,传输代价的比较 假设: 关系R和S分别在不同的场地上,C0为启动代价,C1为单位传输代价。 设:在S所在的场地上执行,则传输关系R实现RS的代价 C=C0+C1*(Length(R)* Card(R) ) = C0+C1*Size(R),半联接优化方法,40,传输代价的比较 采用半联接的传输代价(见半联接优化算法:需传输S和R) C= CS+ CR = C0+C1*(Length(S)* Card(S)+ C0+C1*(Length(R)* Card(R) =2 C0+C1*(Length(S)* Card(S)+ Length(R)* Card(R) =2

27、 C0+C1*(Size(S)+ Size(R) 分析:如果有:CC 则:C0+C1*Size(R)2 C0+C1*(Size(S)+ Size(R) C0/C1+ Size(S)+ Size(R)Size(R),半联接优化方法,41,SDD-1是美国采用ARPANET远程网建立的世界上第一个分布式数据库管理系统。该系统为人们进一步理解和解决分布式数据库中的一些问题做出了很大贡献。SDD-1的查询优化就是对片段数据使用选择、投影、半联接操作来最大限度地缩减。SDD-1具体算法由两部分组成:一是根据评估缩减算法确定一个收益最大的执行策略,但此执行策略的效率可能不一定高;二是进行后优化处理,将基本

28、算法得到的解进行修正,以得到更合理的执行策略。,SDD-1系统优化技术,42,SDD-1系统优化技术,优化模型 在SDD-1算法中,分别使用连接图(join graph)和概要图来描述查询中的条件限制和在关系上的特征参数。 例如: SELECT S.SNAME FROM SUPPLIER S, PARTS P, SUPPLY SP WHERE S.S#=SP.S# AND SP.P#=P.P# AND S.CITY=”Shanghai” 连接图 图的节点表示关系,边表示连接运算,边上标号表示连接条件,节点上标号表示关系名和场地。如下图表示形式。,43,SDD-1系统优化技术,优化模型 关系的概

29、要图 主要用于表示一个关系上的特征参数,其中数据包括关系中元组数量Card(R)、每个关系属性的长度Length(A)和属性不同值的数量Val(R,A)。 如:关系SUPPLYS#, P# , QUANTITY ,Card(R)=30000,则关系SUPPLY的概要图表示为:,44,SDD-1系统优化技术,查询代价与收益估计 SDD-1算法的基本优化思想: 联接图中的每个关系都用一元运算进行局部缩减; 对受益半联接集合中的所有半联接进行操作,逐个找出最优的操作; 选择一个要求最少传输代价的场地,执行操作。 受益半连接集:对于一个给定的半连接集合,所有利益超过代价的半联接操作的集合,称为受益半联

30、接集,记为P。,45,比传输R减少了(1)倍的数据,SDD-1系统优化技术,查询代价与收益估计(利益代价模型) 半连接的代价:传输关系在连接属性上的投影关系的代价。 假设关系R和S在不同场地上,连接属性为A,使用半连接算法将增加传输Size (A(S)的通信代价,则半连接RAS的代价计算如下: Cost(RAS) = C0+C1*Val(S, A)* Length(S.A) 其中C0是通信启动代价,C1是传输单位数据的代价。 如果两个连接关系在同一场地,则传输代价为0。 半连接的利益:半连接的利益是因半连接而节省了不需要传输的元组所对应的传输代价。 对于半连接RAS,其利益可以看作是由原来传输

31、关系R减少到传输R的差值,计算公式如下: Benefit(RAS)= C1*(1-)*Card(R)* Length(R) 其中,为连接的选择度,Length(R)为关系R的一个元组的长度。,46,SDD-1系统优化技术,查询代价与收益估计(利益代价模型),代价: SR,获益: RS,R,S,S1,S2,R.A=S.A,直接连接,(1)Size (R),半连接,(1)Size (A(S),R=RS,(2)Size (R),RS=RS,47,基本优化算法 输入信息:查询联接图及关系概要图 输出信息:半联接执行序列集合P及最后的执行场地 Begin /*初始化*/ 包含所有可执行的一元操作和局部操

32、作,构成执行策略集P; 计算所有的半联接的代价和利益,构成受益半联接集P。 /*选择半联接*/ While (存在满足(Benefit() Cost() ) P= P|为最大受益半联接 修改概要图(最大受益半联接执行结果的概要图); 重新估计执行后的各个半联接的代价和利益; /*选择执行场地*/ FOR I=1,n 计算在场地Si上执行联接运算的网络传输代价Cost(Si) SR=Min Cost(S1),Cost(S2),Cost(Sn) End,SDD-1系统优化技术,48,SDD-1系统优化技术,举例: 已知有三个关系(供应商Supplier、供应关系Supply和部门Dept),分别存

33、在场地S1、S2和S3上,其模式信息、查询连接图和概要图如下: 关系模式 供应商Supplier S(Sno, Sname, City) 供应关系Supply Y(Sno, Dno) 部门Dept D(Dno, Dname, Type) 连接图(SupplierSupplyDept),49,SDD-1系统优化技术,举例: 概要图:,查询要求:找出部门名称为“产品开发”、供应商城市在“纽约”的供应商的编码和名称,对应SQL语句如下: SELECT S.Sno,S.Sname FROM Supplier S,Supply Y,Dept D WHERE S.Sno=Y.Sno AND Y.Dno=D

34、.Dno AND D.Dname=”产品开发” AND S.City=”纽约”,50,SDD-1系统优化技术,举例 步骤1:初始化 (1) 处理一元操作局部约减 执行一元选择操作Dname=”产品开发”,有Card( Dept)= Card(Dname=“产品开发“(Dept)=Card(Dept)/Val(Dept, Dname) =100/5=20 选择度 D = 1/ Val(Dept, Dname)=1/5 由于Dno 为关键字,因此有Val(Dept, Dno)= *Val(Dept, Dno)=20 执行一元选择操作City=”纽约”,有Card(Supplier)= Card(

35、Supplier.City=”纽约” (Supplier) = Card(Supplier)/Val(Supplier, City)=2000/10=200 选择度 S = 1/ Val(Supplier, City)=1/10 同理,Val(Supplier, Sno)= *Val(Supplier, Sno)=200 关系Supplier和Dept参与连接操作的概要图修改为:,51,举例 (2) 初始的利益代价表 假设:C0=0,C1=1 DOM(Supply.Sno) DOM (Supplier.Sno) DOM(Supply.Dno) DOM(Dept.Dno) 求可能的半联接集合 P

36、1= SupplySupplier,P2= SupplyDept P3= SupplierSupply,P4= DeptSupply 初始的利益代价表 对于: P1= SupplySupplier 因为DOM(SUPPLY.SNO) DOM(SUPPLIER.SNO)。 1=s=0.1 Benefit1=(1- 1)*Card(Supply)*length(Supply)=0.9*5000*(2+4)=27K Cost1= Val(Supplier,Sno)*length(Supplier,Sno) =200*4=0.8K,SDD-1系统优化技术,52,举例 对于:P2= SupplyDept

37、 2=20/100=0.2 Benefit2=(1-2)*Card(Supply)*length(Supply)=0.8*5000*6=24K Cost2= Val(Dept,Dno)*length(Dept,Dno) =20*2=0.04K 对于: P3= SupplierSupply 3=Val(SUPPLY, SNO)/Card(DOM(SUPPLIER.SNO) = 1000/2000 =0.5 , Cost3= Val(SUPPLY, SNO)* Length (SUPPLY, SNO)=1000*4=4K Benefit3=(1-3)*200*24=2.4K 对于: P4= Dep

38、tSupply 4=Val(DeptSupply,Dno)/Val(Dept,Dno) 均匀分布下,4近似为1, Benefit4近似为0; Cost4=100*2=0.2K 因此,初始的利益代价表如下:,根据初始的利益代价表,得到受益半联接集P=P1,P2,SDD-1系统优化技术,P1= SupplySupplier P2= SupplyDept P3= SupplierSupply P4= DeptSupply,53,SDD-1系统优化技术,P1= SupplySupplier,举例 步骤2:选择半连接 循环1:选择利益代价最好者 重新计算概要图 Card(SUPPLY)=1* Card(

39、SUPPLY) = 0.1*5000=500 SUPPLY中SNO不同值的个数,SNO属于连接谓词且均匀分布: Val(SUPPLY, SNO)=* Val(SUPPLY, SNO) = 0.1*1000=100 SUPPLY中DNO的不同值个数,DNO不属于连接谓词: Val(SUPPLY, DNO)=100,由于Card(SUPPLY)2Val(SUPPLY, DNO),因此:Val(SUPPLY, DNO)= Val(SUPPLY, DNO)=100 三个关系的概要图更新为如下 :,54,举例 重新计算利益代价表 P2= SupplyDEPT Val(SUPPLY,DNO)与Val(DE

40、PT,DNO)同比例缩减,因此2=0.2 Benefit2=(1-2)*Card(SUPPLY)*Length (SUPPLY) = 0.8*500*6=2.4K Cost2= Val(DEPT,DNO)* Length (DEPT,DNO)= 20*2=0.04K P3= SupplierSupply 由于DOM(SUPPLY.SNO) DOM(SUPPLIER.SNO),因此3 = Val(SUPPLY, SNO)/ Val(SUPPLIER, SNO)= 100/200 =0.5 Benefit3=(1-3)*Card(SUPPLIER)*Length (SUPPLIER) =0.5*2

41、00*24=2.4K Cost3= Val(SUPPLY, SNO)* Length (SUPPLY, SNO)=100*4=0.4K P4= DeptSupply 近似为1 ,Benefit4近似为0,SDD-1系统优化技术,P1= SupplySupplier= SupplySupplier P2= SupplyDept P3= SupplierSupply P4= DeptSupply,55,SDD-1系统优化技术,举例 循环2 从受益半联接集P中选择利益代价最小者P2, 将P2加到策略集P中,得:P=,P2,P1。 重新计算概要图 对于外连接SUPPLY DEPT,需要更新SUPPLY

42、 的概要图内容,假设外连接后结果为SUPPLY(SNO,DNO),则对于SUPPLY有: Card(SUPPLY)=* Card(SUPPLY) = 0.2*500=100 DNO属于连接谓词: Val(SUPPLY, DNO)= * Val(SUPPLY, DNO) = 0.2*100=20 SNO不属于连接谓词: Val(SUPPLY, SNO)=100, 由于1/2(SUPPLY, SNO)Card(SUPPLY)2Val(SUPPLY, SNO),因此:Val(SUPPLY, SNO)= 1/3*(Val(SUPPLY, SNO)+ Card(SUPPLY)=1/3*(100+100)

43、=200/3,P1= SupplySupplier P2= SupplyDept P3= SupplierSupply P4= DeptSupply,56,SDD-1系统优化技术,举例 循环2 三个关系的概要图更新为如下,P1= SupplySupplier P2= SupplyDept P3= SupplierSupply P4= DeptSupply,57,举例 重新计算利益代价表 P3= SUPPLIER SUPPLY 由于DOM(SUPPLY.SNO) DOM(SUPPLIER.SNO),选择度为: 3=Val(SUPPLY, SNO)/Val(SUPPLIER, SNO)=200/3

44、/200 =1/3 Benefit3=(1-3)*Card(SUPPLIER)*Length (SUPPLIER) =0.67*200*24=3.2K Cost3= Val(SUPPLY, SNO)* Length (SUPPLY, SNO)=200/3*4=0.27K P4= DEPT SUPPLY,4近似为1 ,Benefit4近似为0。,SDD-1系统优化技术,P1= SupplySupplier P2= SupplyDept P3= SupplierSupply P4= DeptSupply,58,SDD-1系统优化技术,P1= SupplySupplier P2= SupplyDep

45、t P3= SupplierSupply P4= DeptSupply,举例 循环3 从受益半联接集P中选择P3添加到策略集P中,得:P=,P3,P2,P1。 重新计算概要图 对于外连接SUPPLIER SUPPLY,需要更新SUPPLIER的概要图内容,假设外连接后结果为SUPPLIER(SNO,SNAME),则对于SUPPLIER有: Card(SUPPLIER)=* Card(SUPPLIER) = 1/3*200=200/3 SNO属于连接谓词,因此: Val(SUPPLIER, SNO)= * Val(SUPPLIER, SNO) = 1/3*200=200/3 SNAME不属于连接

46、谓词,因此: Card(SUPPLIER)=200/3 Val(SUPPLIER, SNO)/2=100 所以val(supplier,sno)=Card(SUPPLIER)=200/3 三个关系的概要图更新为如下:,59,SDD-1系统优化技术,举例 重新计算利益代价表 P4= DEPT SUPPLY 4近似为1;Benefit4近似为0; 此时已经没有受益半连接,循环结束。,步骤3:选择执行场地 根据最终的概要图计算各场地上的数据量: Size(S1) =Size(SUPPLIER)=200/3*24=1.6K Size(S2) =Size(SUPPLY)=100*6=0.6K Size(

47、S3) =Size(DEPT)=20*4=0.08K 可以看出场地S1包含的数据量最多,因此选择S1作为执行场地能够获得最小的传输代价。查询的最终传输代价为:Cost = Cost(Semijoin)+Cost(assembly)=(0.8+0.04+0.27)+(0.6+0.08)=1.79K 其中Cost(Semijoin)表示半连接所需要的传输代价,Cost(assembly)表示最后执行连接时所需的传输代价。,60,SDD-1系统优化技术,SDD-1 后优化处理 SDD-1算法的后优化处理的目的是通过考虑半连接的间接影响对优化后的执行策略进行修改,以进一步减少通信代价。后优化处理主要基

48、于以下两个规则对执行策略优化: 准则1 在执行策略集中,消去用于缩减处于执行场地上的关系的半连接操作。 本例中,最终的执行场地为S1,在得到执行策略集P=P3,P2,P1中,在执行策略集中半连接P3= SUPPLIER SUPPLY为缩减S1上关系SUPPLIER,根据准则1可以将P3从策略集中消去以减少优化代价。,总代价= Cost = Cost(半连接)+Cost(全连接) = Cost(P2)+ Cost(P1)+ Cost(迁移supply和DEPT至S1场地) =(0.8+0.04)+(0.6+0.08)=1.52K,61,SDD-1系统优化技术,SDD-1 后优化处理 准则2 延迟

49、执行代价高的半联接,以尽可能利用已缩减的关系。,例:有关系R、S、T,分别存在场地S1、S2和S3上,联接图如下:,求:实现RST。假设:实现如下,,方法1,示意,T= TS S= S R S= S T,62,从优化实现可知, 方法2中的步的实现同方法1的步实现顺序不同,其目的是方法2中第步可以利用第步的已缩减的S。即尽可能利用已缩减的关系,使整体传输代价降低。,SDD-1系统优化技术,SDD-1 后优化处理 准则2 延迟执行代价高的半联接,以尽可能利用已缩减的关系。,方法2, S = S R T = T S S= S T,示意,方法1,63,半联接技术的不足 半联接技术是通过局部缩减操作缩减

50、关系的数据量,发送缩减的关系到执行场地,在执行场地对缩减后的关系进行查询处理。 优点是大大降低了场地间传递的信息量,减少了整个系统的传输代价。 不足是增加了系统的局部处理代价: (1) 没有考虑局部代价; 如 :RS= (RS)S= RB(S) B(S)的代价 RB(S)的代价 (2)当选择度较低时,半联接技术才可行。 因此,在应用半联接技术时,要考虑其适应的环境。,SDD-1系统优化技术,64,查询操作的代价评估:综合考虑局部代价和传输代价。 若侧重传输代价,局部代价可以忽略不计时,采用半联接技术较好; 侧重局部代价时,采用直接联接比采用半联接优越。 枚举法是基于直接联接的实现方法。,枚举法

51、优化技术,65,常见的直接连接算法主要有: 嵌套循环连接算法(nest-loop) 归并排序连接算法(merge-scan) 哈希连接算法(Hash) 基于索引的连接算法 对每种直接连接算法进行代价估计:考虑执行连接操作所需的磁盘I/O代价。 对磁盘I/O代价的估计主要依赖于数据库的特征参数。,枚举法优化技术,66,嵌套循环连接算法 是一种最简单的连接算法,原理是对连接操作的两个关系中的一个仅读取其元组一次,而对另一个关系中的元组将多次读取。 特点是可以用于任何大小的关系间的连接操作,不必受连接操作所分配的内存空间大小的限制。,枚举法优化技术,假设有关系R(A,B)和S(B,C),Card(R

52、)=n,Card(S)=m,现在要执行两个关系在属性B上的连接操作.,67,基于元组的嵌套循环连接 循环以关系中的元组为单位进行操作,具体的执行算法如下: Result= /*初始化结果集合*/ For each tuple s in S For each tuple r in R If r.B=s.B Then /*元组r和元组s满足连接条件*/ Join r and s as tuple t; Output t into Result;/*输出连接结果元组*/ End If End For End For Return Result,枚举法优化技术,外关系S,内关系R,68,基于元组的嵌套

53、循环连接 在执行嵌套循环连接时,仅对外关系进行1次读取操作,而对内关系则需要进行多次读取。 如果不进行优化的话,执行代价很大,以磁盘IO代价计算最多可能多达Card(S)*Card(R) =mn次。 通常对这种算法进行修改,一种方法是通过尽可能多地使用内存以减少磁盘IO次数;另一种方法是使用连接属性上的索引,以减小参与连接元组的数量。,枚举法优化技术,69,基于块的嵌套循环连接 通过尽可能多的使用内存,减少读取元组所需的I/O次数。 对连接操作的两个关系的访问均按块(也称为页面)进行,同时使用尽可能多的内存来存储嵌套循环中外关系的块。 假设:为连接操作分配的内存缓冲区大小为M个块,有Block

54、(R)Block(S)M, 实现过程:首先选取较小的关系作为外关系,本例即关系S。将1到M-1块分配给关系S,第M块分配给关系R。 将外关系S按照M-1个块的大小分为多个子表,并重复地将这些子表读取到内存缓冲区中,用于重复地依次读取关系R的每一个块。 对于内存缓冲区中元组的连接操作,先在M-1个块的外关系S元组的连接属性上构建查找结构,再从内关系R在内存中的块中取元组,通过查找结构与S中的元组连接。,枚举法优化技术,70,基于块的嵌套循环连接 算法: Result= /*初始化结果集合*/ Buffer=M /*内存缓冲区*/ For each M-1 in Block(S) /*每次从外关系

55、S中读取M-1个块到内存缓冲区*/ Read M-1 of Block(S) into Buffer; For each block in Block(R) /*每次从内关系R中读取1个块到内存缓冲区*/ Join M-1 of Block(S) and 1 of Block(R) in Buffer;/*在内存中对元组执行连接*/ Output t into Result; End For End For Return Result,枚举法优化技术,71,基于块的嵌套循环连接方法的代价估计 假设R和S占用的块分别为Block(R)和Block(S),M为内存缓冲区大小(块数)。一次I/O可读

56、取一个数据块。则共需读取关系S的块数为Block(S),共需读取R的块数为Block(R)* Block(S)/(M-1)。,枚举法优化技术,说明: 如果连接关系Block(R)*Block(S)的值远远大于内存缓冲区大小M时,认为连接的代价近似等于Block(R)*Block(S)。 这种算法能够适用于任意大小的关系之间的连接执行,因此基于块的嵌套循环连接算法依然广泛应用于现有的数据库系统中。,72,嵌套循环连接方法举例 假设连接的两个关系R和S,Block(R)=2000,Block(S)=500,内存缓冲区M=51。则: 外关系为S 内存分配:M-1=50分配给S,再循环读取关系R的20

57、00个块。 根据公式: 连接的执行代价为: 500/(51-1)*2000+500=20500次磁盘IO。,枚举法优化技术,73,基于排序的连接算法 首先将两个关系按照连接属性进行排序(分段排序+归并) 然后按照连接属性的顺序扫描两个关系,同时对两个关系中的元组执行连接操作。 简单的归并排序算法的执行过程,枚举法优化技术,74,简单基于排序的连接算法 对已经按照连接属性排序的两个关系,按照顺序读取关系中的块到内存中执行连接操作。,枚举法优化技术,执行代价:Cjoin = C排序I/O+C连接IO =C分段排序I/O+C归并I/O+C连接I/O = 2(Block(R)+ Block(S) +2

58、(Block(R)+ Block(S) +(Block(R)+ Block(S) =5(Block(R)+ Block(S),75,归并排序连接算法 其思想是将排序的第二阶段与归并连接阶段合并,这样可以节省一次对关系的读写操作。,枚举法优化技术,执行代价为:Cjoin = 3(Block(R)+ Block(S),76,哈希连接算法 使用同一个哈希函数,对进行连接的两个关系R和S中的元组的连接属性值进行散列,具有相同属性值的元组会出现在相同Hash数值的桶中,然后对对应的桶中的元组执行连接 执行代价为:Cjoin=3(Block(R)+ Block(S) 哈希代价:一次读写2(Block(R)

59、+ Block(S) 桶连接:若一个桶能全部装入内存缓冲区块中,需要一次读取操作(Block(R)+ Block(S),枚举法优化技术,77,连接关系的传输方法 当参与连接的两个关系在不同场地时,需要将它们传输到同一场地执行连接操作。 全体传输 Ctran= (Card(R)*Length(R)/m*Cmes 其中m为报文容量,Cmes为报文的单位传输代价 按需传输 Ctran= l* Cmes +(Card(R)*Length(R)/m*Cmes 其中l为请求报文,R为需要传输的关系,枚举法优化技术,78,分布式查询优化技术是在集中式查询优化技术基础上的扩展,其中增加了对通信代价的评估,主要

60、介绍四种优化方法,核心是: INGRES和System R INGRES dynamic optimization System R static optimization based on exhaustive search 考虑代价的动态规划方法( System R ) PostgreSQL的遗传算法,集中式系统中的查询优化算法,79,INGRES INGRES系统使用的是一种动态查询优化算法,查询优化的过程划分为两个阶段: 第一阶段:基于演算代数的查询分解(decomposition)或称( Detachment )。即将一个查询分解为一个查询序列,序列中的每个查询包含一个独立的关系及在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论