28
第第第第 第第第第第第 第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第 一; 第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第第 第第第第第第 第第第第第第第第第 一一。 第第第第第第第第第第第第第第第第第第第第 第第第第第第第第第第第 第第第第第第 一一。 第第第第第 第第第 第第第第第第第第第第第 第第第 第第第第第第第第第第第 第第第 第第第第第第第第第第第第第第 第第第 第第第第第第第第 L

第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

  • Upload
    kylee

  • View
    118

  • Download
    0

Embed Size (px)

DESCRIPTION

L. 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划; 第三层是用户查询的高级描述。 第十一章讨论了第一层的各种实现算法。 本章主要讨论第二层的优化处理技术。 本章最后一节简单介绍了第三层的一些优化方法。 第一节 问题的提出 第二节 启发式关系代数优化方法 第三节 启发式关系演算优化方法 第四节 基于复杂性估计的查询优化方法 第五节 语义查询优化方法. L1. 第一节 问题的提出 - PowerPoint PPT Presentation

Citation preview

Page 1: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

第十二章 查询优化技术

关系数据库系统的查询自下而上分为三个层次:第一层是关系代数的操作;第二层是由关系代数的操作组成的查询计划;第三层是用户查询的高级描述。第十一章讨论了第一层的各种实现算法。本章主要讨论第二层的优化处理技术。本章最后一节简单介绍了第三层的一些优化方法。

第一节 问题的提出 第二节 启发式关系代数优化方法第三节 启发式关系演算优化方法第四节 基于复杂性估计的查询优化方法第五节 语义查询优化方法

L

Page 2: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

策略 Q1=SN((S.S#=SC.S#)(SC.C#=‘C2’)(SSC))策略 Q2=SN(S.C#=‘C2’(SS.S#=SC.S#SC))策略 Q3=SN((S.C#=‘C2’SC)S.S#=SC.S#S)在给定某个执行环境下,三个策略 Q1 、 Q2 、 Q3 的时间开销分别是 200105 、 125 、 10 秒。

第一节 问题的提出 多个关系代数构成的查询可以有多种操作策略,不同的操作策略一般有不同的磁盘存取复杂性,因此选择复杂性较低的一种策略是提高访问数据库效率的重要的优化技术。 下例说明不同的操作策略有不同的存取复杂性。

L1

select distinct s.snfrom s,scwhere s.s#=sc.s# and sc.c#=‘c2’

[ 例 ] 设关系 S 有 1000 个学生的记录,其属性是姓名 sn 和学号 s# 。 关系 SC 有 10000 个选课记录,其属性是学号 s# 和课程号 c# 。 现要查询选修 C2 课程的学生姓名。

这个例子不但说明了查询优化的必要性,而且给我们启示:先选择再连接,可减少中间运算,提高处理速度。

Page 3: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

第二节 启发式关系代数优化方法

关系代数表达式的优化是查询优化中的一个至关重要的问题。许多关系型 DBMS 处理查询的第一步是把查询的高级描述 ( 例如 SQL) 语句转换为对应的内部表示,即关系代数表达式,或其图表示:查询树。第二步是运用关系代数等价变换规则和关系代数优化规则 ( 策略 ) 把内部表示转换为复杂性较低的另一等价形式。本节介绍基于关系代数等价变换规则的启发式查询优化方法。

一 关系代数等价变换规则 二 启发式代数优化规则 三 启发式代数优化算法

L2

Page 4: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

一 关系代数等价变换规则查询优化是在结果相同的操作方案中选择的,这引出等价关系代数表达式的概念:若两个关系代数表达式 A 和 B 表示相同的关系,则称之为互相等价,记作 AB 。常用的关系代数等价变换规律包括 12 类。下边仅列出前 10 类。1 选择串接率 : c1 and …and cn(A)c1(c2(…(cn(A))…)) 其中 A 是关系代数表达式 ,ci 是选择条件。 即:这种复合条件的选择可以转换为逐次选择操作。2 选择交换率 : c(d(A))d(c(A)) , c 和 d 是选择条件。 即:逐次选择操作与选择顺序无关。3 投映串接率 :L1(L2(…(Ln(A))…))L1(A) ,其中, L1L2…Ln . 即:逐次投影操作可一次投影到投影域交集。4 选择投映交换率:关于选择与投影连续操作的次序交换问题 , 若条件 c 仅包括投映域 L 中的属性,则 L(c(A))c(L(A)) 若条件 c 包括投映域 L 外的属性 x, 则 L(c(A))L(c(L,x(A)))5 连接和笛卡儿乘积的交换率: ABBA , AcBBcA

6 集合操作的交换率: ABBA , ABBA

L21

接下页

Page 5: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

7. 连接、笛卡儿乘积和集合操作的结合率 (AB)CA(BC) (AcB)dCAc(BdC) (AB)CA(BC) (AB)CA(BC) 其中 A 、 B 和 C 是关系代数表达式,小写字母 c 和 d 表示连接条件。8. 选择、连接和笛卡儿乘积的分配率 设 A 和 B 是关系代数表达式, d 是连接条件。 c(AdB)(cA)dB ( 选择条件 c 仅涉及 A 的属性 ) c(AdB)(c1A)d(c2B) ( 三个选择条件满足 c=c1c2 , c1 仅涉及 A 属性, c2 仅涉及 B 属性 ) 用代替上边两式的 d ,式子同样成立。9. 投影、连接和笛卡儿乘积的分配率 设 A 和 B 是关系代数表达式, d 是连接条件。 L(AdB)(L1A)d(L2B) (L=L1L2 , L1 仅涉及 A 的属性, L2 仅涉及 B 的属性 ) 用代替上式的 d ,式子同样成立。10. 选择与集合操作的分配率 c(AB)c(A)c(B) , c(AB)c(A)c(B), c(A-B)c(A)-c(B)

L211

Page 6: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

二 启发式代数优化规则 (5 条 )

本节第一段列出的关系代数等价变换规则仅保证表达式的等价变形,变换结果的磁盘存取复杂性可能降低了,也可能增加了。下边列出等价变形的五条启发式代数优化规则 ( 策略 ) 。其目的是为了使等价变换的结果有较低的磁盘存取复杂性。[ 规则 1] 选择和投映尽早执行, ( 在笛卡儿乘积或连接操作之前尽量排除无关数据 ) ;[ 规则 2] 把某些选择操作与邻接的笛卡儿乘积结合为连接操作, ( 节省了两次操作之间的磁盘存取, 特别是笛卡儿乘积大量的中间数据 ) ;[ 规则 3] 同时执行对同相同关系的多个选择和投映操作, ( 可以避免对相同关系的重复扫描 ) ;[ 规则 4] 把投映操作与连接操作结合起来执行, ( 节省了单独投影操作所需的关系扫描 ) ;[ 规则 5] 提取公共表达式,储存中间结果,减少重复计算。 (适合于结果数据量少、但计算量大的公共表达式, 对此公共表达式的调用越频繁,效益就越大 ) 。

L22

Page 7: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

三 启发式代数优化算法该算法运用关系代数的等价变换规则和启发式优化规则实现查询优化。算法的两个步骤是:步骤 1 :把查询的高级表示 ( 例如 SQL) 转换为查询的内部表示, 这个转换也分两步走: 查询高级表示关系代数表达式; 关系代数表达式查询树。查询树是查询的一种内部 表示形式。在查询树中,内点表示关系代数操作,叶 点表示关系。执行方向自底向上。例如, SQL 语句 select A from R,S,T where P=15 and N=‘user’; 转换为关系代数示式 A(P=15and N=‘user’(RST)) , 再表示为左图所示的查询树。步骤 2 :运用关系代数等价变换规则和关系代数优化规则,对查 询树进行变形,产生一个优化的查询方案。查询树优化 变形的实质,是对构成查询的各个关系代数操作进行优 化重组。(1) 启发式代数优化算法的非形式描述(2) 启发式代数优化算法的例子

A

P=15and N=‘user’

R S

T

L23

查询树例

接下页

Page 8: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

启发式代数优化算法的非形式描述输入:关系代数表达式输出:计算输入关系代数表达式的程序方法:顺序执行下列步骤 (按优化规则对查询树作等价变形 )1 使用规律 1 把选择操作 c1 and …and cn(E)改为 c1(c2(…(cn(E))…)) , (目的是增加灵活性 ) ;2 使用规律 2 、 4 、 8 、 10 ,把选择操作沿树下移,靠近叶结点, (目的是尽早选择 ) ;3 使用规律 3 、 4 、 9 、 11 ,把投映操作沿树下移,靠近叶结点, (目的是尽早投映 ) ;4 使用规律 1 、 3 、 4 ,把多个邻接的投映选择合并为单个操作, (目的是减少访问磁盘次数 ) ;5 优先执行具有最小选择操作 (具最小选择结果关系 ) 的叶结点, (目的是减少中间结果 ) ;6 将紧邻的笛卡儿乘积和选择操作并为连接操作, (目的是避免出现笛卡儿乘积结果 ) ;7 划分子树,使每个子树的操作由单个存取程序一次完成;8 产生一个计算最后查询树的程序,每步计算一个子树。

L23a

Page 9: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

图书馆数据库例图书 BOO(TI , AU , PN , NC) ( 属性的含义是:书名,作者,出版社,书号 )出版社 PUB(PN , PA , PC) ( 属性的含义是:出版社,地址,城市 )读者 BOR(NA , AD , CI , CN) ( 姓名,地址,城市,借书证号 )借阅 LOA(CN , NC , DA) ( 属性的含义是:借书证号,书号,日期 )

启发式代数优化算法的例子L23b

查询:显示 94年 2月 1日前借出的书的书名。SQL 表示式: select TI from BOO , BOR , LOA where BOO.NC=LOA.NC and BOR.CN=LOA.CN and DA<2/1/1994 ;关系代数示式: T1(C1(L(C2((loabor)boo)))) 接下页

Page 10: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

|da<2/1/1994|ti

两投映合并 ( 变换规则 3,4)选择分解下移 ( 变换规则 1,2,8)

loa bor

boo

| boo.nc=loa.nc|ti

|da<2/1/1994 | bor.cn=loa.cn

|ti,nc

|cn

|nc

|nc,cn

loa bor

boo

|boo.nc=loa.nc

|da<2/1/1994 |bor.cn=loa.cn

|ti,nc

|cn

|nc

|nc,cn

L23b1

|ti

loa borboo

|boo.nc=loa.nc & bor.cn=loa.cn

loa bor

boo

loa bor

boo

查询树的优化 T1(C1(L(C2((loabor)boo))))

投映分散下移loa bor

boo|boo.nc=loa.nc|ti

| bor.cn=loa.cn

C1

C2

|ti,au,pn,nc,na,ad,ci,cn,da

|da<2/1/1994

把与合并为连接 , 划分子树

Page 11: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

第三节 启发式关系演算优化方法

本节介绍 QUEL查询语言使用的启发式优化方法。这种方法使用超图表示 QUEL查询,通过对超图逐次消解消边产生查询算法。这种方法还提供一种选择消边的策略和投影规则,按照这些策略和规则处理消图,所产生的查询算法就能缩小操作的关系和减少查询的中间结果,从而达到提高查询效率的目的。

一 多重自然连接的优化处理 二 查询的超图 HG 表示 三 超图的消解算法

L3

Page 12: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

一 多重自然连接的优化处理 问题:设关系 R含属性 A 和 B ,关系 S含属性 B 和 C , 关系 T含属性 C 和 D 。计算自然连接 RST.因自然连接满足结合率和交换率,故 RST 可按任何顺序执行,但不同的执行顺序有不同的效率,故必须合理选择。例如,因 R和 T 无共同属性,若先连接 R 和 T ,实际是求笛卡儿乘积,将产生大量中间数据,故是最差的执行方案。以下算法是较好的策略:

A B C D

L31 R S T

这个策略把一个复杂的三重连接分解成两个简单的二重连接操作,有较高的执行效率。注意 R 和 T 在连接前先作选择即作半连接,目的是排除无关元组。

result= ;for S每个元组 (b,c) do 求 (B=bR)(b,c)(C=cT) ; 把结果写入 result ;endfor ;

for R每个元组 r do for i=1 to n do Ti=Si {r} endfor; 求 {r}T1 T2Tn ; 写结果入 result ;endfor ;

上述策略可推广到一般形式的多重自然连接 Q=RS1…Sn,设在属性结构上 ,{Si} 两两不交 ,但任 Si 与 R 交集非空,算法为 :

Page 13: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

二 查询的超图 HG 表示假设查询 Q 的关系代数表达式是: C1C2…Cn(R1R2…Rk)其中 Ci 是不含操作的任意条件,在超图表示中 Ci 分为三类: (1)A=B ; (2)A=a 或 a=A ; (3) 其它 其中大写字母表示属性名,小写字母表示常量。超图由结点和超边组成,表示为 HG=(V , HE) ,其中, V 是结点集合,每个结点表示某关系的一个属性; HE 是超边集合,每个超边表示包含一组结点的集合。超边分为两种类型: 关系超边:由某关系的属性结点组成 , 用包围结点的实线框表示 . 条件超边:由第三类 Ci 属性结点组成 , 用包围结点的虚线框表示 . 对查询 Q按下述方法建立超图 ( 这样的超图称为连接超图 ) :1)按每个关系的属性结构画出对应的关系超边, 不同关系的属性即使同名也视为不同的结点, 若有第一类条件规定了属于不同关系的两个属性的等值约束, 则这两个属性无论同名与否,都视为相同结点;2)按每个第三类条件 Ci画出对应的条件超边。

L32

接下页

Page 14: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

[ 例 ] 画出查询 C1C2C3C4(R1R2R3) 的连接超图,其中三个关系的属性结构是: R1(A,B) , R2(C,D,E) , R3(F,G),

四个条件分别是: C1 : A=C C2 : (B<C)(B<D)

C3 : G<E C4 : (F=f)(B=b)

小写字母 f 和 b 表示常量。

除了条件 C4 ,查询的全部参数均已反映在连接超图中,C4 属于第二类条件,其作用是在算法中形成初值。C1 属于第一类条件,其作用是在 R1 和 R2 间建立连接。

等值连接条件 :A=C

条件超边C3 : G<E

L321

B A

G EF

D

关系超边R1(A,B)

关系超边R2(C,D,E)

关系超边R3(F,G)

条件超边 C2 :(B<C)(B<D)

Page 15: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

叁 超图的消解算法

查询的超图消解算法原理是:首先给出最简单超图的查询结果;然后对一般超图,通过消除一条超边得出较简单的超图以及一些语句,这些语句描述了新旧两超图查询结果的联系。只要新超图得到查询结果,按照这个联系,就可以得到旧超图的查询结果。故逐次消边,可把复杂超图归结为最简单的超图。从而得出复杂查询的结果。如何消解超图并得到一些语句,这由超图消解的四条规则决定。此外,应用启发式的优化规则可以提高算法的效率。

1. 消解过程中的变量 2. 四条消解规则 3. 选择超边的启发式规则 4. 超图消解算法

L33

Page 16: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

超图消解过程中的变量

设 HG(V,E) 是查询 Q 的连接超图 .若 E 是关系超边,则 R(E) 表示模式 E 在消解过程中的动态实例,是变量。 注意加载在 E 的数据在消解过程中是变化的; R0(E) 表示模式 E 对应的原始关系,是常量; 变量 R(E) 的初值是 C(R0(E)) , 其中 C 是查询 Q 形如 A=a 的选择条件 ( 合取 ) 。若 E 是条件超边,则 C(E) 表示 E 的选择条件,是常量。result(HG) 是消解过程中超图 HG 对应的关系。(L321)[ 查询例 ] 的变量如下:

L33A

超边 ( 关系实例 ) 原始关系 初始值 表示条件{FG} R({FG}) R0({FG})=R3 F=f(R3){ADE} R({ADE}) R0(ADE})=R2 R2

{AB} R({AB}) R0(AB})=R1 B=bR1

C(GE) G<EC(ABD)=C(BCD) B<CB<D

Page 17: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

四条消解规则 ( 用于对消边变形构造计算该图结果的程序 )1 若 HG只含一条关系超边 E ,则 prog(HG) 仅一句: result(HG)=R(E):2 若 HG 是 k 个不相交超图 HG1 、…、 HGk 的并,则 prog(HG) 有 k+1 句 : prog(HG1) ; … … … … ; prog(HGk) ; result(HG)=result(HG1)…result(HGk). 3 若 HG消除条件超边 E ,得超图 HG1 ,则 progr(HG) 有两句: prog(HG1); result(HG)=C(E)(result(HG1)). 4 若 HG消除关系超边 E ,得 k 个不连通超图 GH1 、…、 HGk , 则 prog(HG) 有 k+2 句: for 每个与 E 相交的关系超边 F do R(F)=R(F)R(E); prog(HG1); …; prog(HGk); result(HG) = R(E) result(HG1) … result(HGk). 注意半连接目的是让关系 F删除不能与关系 E 连接的元组, 为后边的连接做准备。

L33B

接下页

Page 18: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

HG消去条件超边 GE得 HG1根据规则 3 , prog(HG) 是prog(hg1) ;resu(hg)=G<E(resu(hg1)).

B A

DG EF

R3 R2

R1

HGB A

D

F R3 R2

R1HG1

EG

HG2 HG3

B A

R2

R1

HG4DE

ADE

HG5

R2

HG4消去关系超边 AB得HG5,根据规则 4 , prog(HG4) 是R({ADE})=R({ADE})R({AB}) ;prog(hg5):resu(hg5)=R({ADE}) ;resu(hg4)=R({AB})resu(hg5).

L33b1

(L321)[ 查询例 ]的超图消解算法所得程序见下页 :

HG1 由离散子图 HG2 和 HG3 组成。 HG2 是最简单的超图; HG3消去条件超边 ABD得HG4 。根据规则 2 和规则 1 , prog(HG1) 是prog(hg2);resu(hg2)=R({FG}) ;prog(hg3);prog(hg4);resu(hg3)=B<CB<D(resu(hg4)) resu(hg1)=resu(hg2)resu(hg3) ;

Page 19: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

RESULT(HG2)=R({FG}) ;R({ADE})=R({ADE})R({AB}) ;RESULT(HG5)=R({ADE}) ;RESULT(HG4)=R({AB}) RESULT (HG5) ;RESULT(HG3)=B<CB<D (RESULT(HG4)) ;RESULT(HG1)=RESULT(HG2) RESULT(HG3) ;RESULT(HG)=G<E ( RESULT(HG1) ).

初值:R({FG})=F=f(R3) ;R({AB})= B=b(R1) ;R({ADE})=R2 ;

L33b2(L321)[ 查询例 ] 的超图消解算法所得程序

该算法并未对连接超图消边的顺序作优化,下边介绍优化消边过程的两个启发性规则。 接下页

Page 20: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

选择消解超边的启发式规则

一般的超图消解算法只能给出查询的一个实现。需要进行优化。下边介绍两个优化规则:

(1)小关系规则: 按此规则选择关系超边进行消解,可在关系操作前 尽量使用选择和半连接缩小操作关系。使得与该超 边有关的操作有较少的时延;(2) 投映规则: 尽早消除不需要的属性,减少查询处理的中间结果。

L33C

Page 21: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

[ 小关系定义 ]设 R是一个关系, A 是一个属性, a 是常量。 满足下列条件之一的关系 R称为小关系: R=A=a(S) ,其中 S 是某个关系; R=RS ,其中 S 是某关系。[ 小关系规则 ]在超图消解过程中优先选择满足下列条件 之一的消边 E 进行处理: 1)E是小关系超边; 2)消 E后,出现小关系超边。

L33c1

例:图书馆查询range of B is boorange of L is loarange of R is borretrieve (R.na,R.ad)where R.cn=L.cn and L.nc=B.nc and B.ti=‘toef;

图书 boo(ti,au,nc) 书名 作者 书号读者 bor(na,ad,cn) 姓名 地址 证号借阅 loa(cn,nc,da) 证号 书号 日期查询:借阅‘Toef’的 读者的姓名和地址

接下页

cn da ncR BL

HG

消解 B(满足条件 )

cnRHG2

cn daR LHG1

消解 L(满足条件 )

Page 22: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

cn da ncR BL

HG

消解 B(满足条件 )

例:图书馆查询range of B is boorange of L is loarange of R is borretrieve (R.na,R.ad)where R.cn=L.cn and L.nc=B.nc and B.ti=‘toef;

图书 boo(ti,au,nc) 书名 作者 书号读者 bor(na,ad,cn) 姓名 地址 证号借阅 loa(cn,nc,da) 证号 书号 日期查询:借阅‘Toef’的 读者的姓名和地址

规则 4 : R(L)=R(L) R(B); prog(hg1); res(hg)=R(B) res(hg1);

规则 1 : res(hg2)=R(R);

规则 4 : R(R)=R(R)R(L); prog(hg2); res(hg1)=R(L)res(hg2);

小关系判别条件 :R=A=a(S) , 其中 S 是某关系R=RS , 其中 S 是某关系

L33c11

cnRHG2

cn daR LHG1

消解 L(满足条件 )

Page 23: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

超图消解的投映规则

在超图消解过程中运用投影规则,能尽早消除查询不需要的属性。中间结果的减少,提高了查询的效率。这个规则的关键是识别哪些属性是后边操作需要的,哪些是不需要的。为此引入下边的概念:

重要结点;若在消解过程中,关系的某些属性在以后操 作是必需的,则称其对应的结点为重要结点。

重要结点有下述三条识别规则:1) 查询对象属性对应的结点;2) 设消边 E使超图 hg 变为 hg1 , 则 N 是 hg1 重要结点等价于 N 是 hg 重要结点或 NE ;3) 若超图 hg 是不相交子图之并, N 是 hg 重要结点等价于 N 是某一子图重要结点。

下一页给出重要结点的例子。

L33c2

接下页

Page 24: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

na ad cn da

bor loa boo

超图 查询属性 消边 boo 消边 loaHg na ad Hg1 na ad ncHg2 na ad cn

1

2举例:图书馆查询超图重要结点:range of B is boorange of L is loarange of R is borretrieve (R.na,R.ad)where R.cn=L.cn and L.nc=B.nc and B.ti=‘toef;按照小关系规则选择消边的过程 :HG消去 boo得 HG1HG1消去 loa得 HG2本页面表示各个超图的重要结点

重要结

nc ti au

L33c21

图书 boo(ti,au,nc) 书名 作者 书号读者 bor(na,ad,cn) 姓名 地址 证号借阅 loa(cn,nc,da) 证号 书号 日期查询:借阅‘Toef’的 读者的姓名和地址

cn da ncR BL

HG

消解 B(满足条件 )

cnRHG2

cn daR LHG1

消解 L(满足条件 )

接下页

Page 25: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

超图消解算法的形式定义

[1] 执行投影规则的超图递归算法;

[2] 带选边功能且执行投影规则的超图递归算法;

[3] 超图消解的一般算法

L33D

小麦 : 上述三个算法见附加文档 L33D1.doc/L33D2.doc/L33D3.doc

接下页

Page 26: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

消解算法所得程序:1)R({FG})=F=f(R3)2)R({AB})=B=b(R1)3)R({ADE})=R2

4)RESULT(HG5)=D5 R({ADE});5)RESULT(HG3)=D3 B<CB<D D4(R({AB})RESULT(HG5));6)RESULT(HG2)=D2R({FG});7)RESULT(HG)= D0G<E D1 (RESULT(HG2)RESULT(HG3)).注意:省略了半连接;已合并某些相邻语句; 可以把最后句子的投影笛卡儿乘积合并为连接。

例:查询 C(R1R2R3) ,其中关系: R1(A,B) , R2(C,D,E) , R3(F,G)条件 C : (A=C)(B<CB<D)(G<E)(F=f) (B=b)

等值连接条件 :A=C

条件超边C3 : G<E

B A

G EF

D

关系超边R1(A,B)

关系超边R2(C,D,E)关系超边

R3(F,G)

条件超边 C2 :(B<C)(B<D)

L33D1

Page 27: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

第四节 基于复杂性估计的查询优化方法

基于复杂性估计的查询优化方法分为两个阶段:阶段 1 :用前两节的启发性方法产生逻辑级优化的查询计划 P ;阶段 2 :为 P 中每个关系代数选择具最小复杂性的实现算法, 即确定查询计划 P 的优化执行策略。 集中式数据库中影响查询操作效率有三个因素: 1) 存取磁盘的磁盘块数; 2) 中间结果占用的磁盘空间量; 3) 处理机时间。这三个因素的度量就是查询执行策略的复杂性。但对于大规模数据库而言,由于主要因素是访问磁盘的磁盘块数,所以把它作为查询执行策略的复杂性。一个查询计划的执行策略复杂性,就是它调用的所有关系代数操作的磁盘存取块数的总和。

L4

Page 28: 第十二章 查询优化技术 关系数据库系统的查询自下而上分为三个层次: 第一层是关系代数的操作; 第二层是由关系代数的操作组成的查询计划;

第五节 语义查询优化方法语义查询优化方法利用关系的完整性约束,通过修改,把给定的查询条件变换为更为有效的等价查询。例如压缩查询对象的搜索范围,然后使用一般性的查询算法。这个方法的关键是找出与给定查询有关的完整性约束条件。例:给出图书馆数据库三个关系:

L5

考察一个查询:Select Ti,Au,Pn From Boo,Bor,LoaWhere Boo.nc=Loa.nc and Bor.cn=Loa.cn and ci=‘A’

若数据库有两个完整性约束: (1) 读者只能在居住地的图书分馆借书; (2) A城分馆图书编号范围是 U~V.则查询条件作如下修改将提高查询效率:Where Boo.nc=Loa.nc and Bor.cn=Loa.cn and ci=‘A’ and boo.ncU and boo.ncV

BOO(TI , AU , PN , NC) ( 图书信息 ) ( 属性的含义是:书名 , 作者 , 出版社 ,书号 )BOR(NA , AD , CI , CN) (读者信息 ) ( 姓名 ,地址 ,城市 ,借书证号 )LOA(CN , NC , DA) (借书信息 ) ( 属性的含义是:借书证号 ,书号 ,日期 )