高级数据库技术(7)分布式查询处理和优化

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

17
§7.2.1 查询优化问题提出
Q3= Пsname (S |><| σo=‘2’ ( SC) ) 假设SC表在Cno上有索引,S表在Sno上有索引 ①б : 读SC表索引= 读SC表总块数= 50/100<1块 读数据时间 中间结果大小=50条 不必写入外存 ② : 读Student表索引= 读Student表总块数= 50/10=5块 读数据时间 ③П 通过分析可知:采用不同的等 价关系表达式其存取时间差别很 总时间<10秒 大,因而必须优化。
设E1、E2等是关系代数表达式,F是条件表达式
l. 连接、笛卡尔积、并、交的交换律 E1× E2≡ E2×E1
E1 E1
F
E2≡E2 E2≡E2
F
E1 E1
21
§7.2.3 关系代数表达式等价变换
2. 连接、笛卡尔积、并、交的结合律
(E1×E2) × E3 ≡ E1 × (E2×E3)
(E1 (E1
8
§7.1查询处理概述

集中式

查询转换为代数表达式 从所有等价表达式中选择最优的代数表达式 除了集中式问题外,还有 站点之间交换数据的操作 选择最优的执行站点 数据被传送的方式

分布式

9
用户
用户
用户
用户
全局模式 全局模式 全局模式
全局模式
本地模式.
本地模式
LDBMS.
LDBMS

关系代数表达式等价
表达式转换:力图找出与给定关系代数表达式等价 的但执行效率更高的一个表达式。(称作代数优化) 两个表达式等价:产生的结果关系具有相同的属性 集和相同的元组集。 表达式转换的代数定律:将一个表达式转换为与之 等价的另一个表达式的规则。

20
§7.2.3 关系代数表达式等价变换
第7章分布式查询处理和优化
分布式数据库查询优化 查询处理概述 分布式查询优化问题提出 集中式数据库查询优化

查询优化问题的提出 关系代数等价变换 查询优化策略 关系代数查询优化实例 查询优化的一般步骤


查询优化的目标与代价估算 DDBS查询分类与层次结构 基于关系代数等价变换的查 询优化 基于半连接算法的查询优化 基于直接连接的查询优化
5
§7.1查询处理概述

查询执行计划与查询优化器



执行一个查询,不仅需要提供关系代数表达式, 还要对该表达式加上注释来说明如何执行每个操 作。加了“如何执行”注释的关系代数运算称为 执行原语,用于执行一个查询的原语操作序列称 为查询执行计划。 不同的查询执行计划会有不同的代价。构造具有 最小查询执行代价的查询执行计划应当是DBMS 的责任。这项工作称为查询优化,由查询优化器 来完成。 查询优化是影响RDBMS性能的关键因素。
7. 选择对并的分配律
假设:E=E1∪E2,E1,E2有相同的属性名
бF(E1∪E2)≡ бF(E1)∪ бF(E2)
8. 选择对差运算的分配律
假设:E1与E2有相同的属性名 бF(E1-E2)≡ бF(E1) - бF(E2)
28
§7.2.3 关系代数表达式等价变换
9. 投影对笛卡尔积的分配律
假设:E1和E2是两个关系表达式,
18
§7.2.2 查询优化策略
♦ 尽早进行选择运算 ♦ 尽早进行投影运算 ♦ 避免进行笛卡尔积运算,把笛卡尔积与其后的选择运 算合并成一个连接运算 ♦ 同时计算一串选择和投影的操作,以免分开运算造成 多次扫描文件。 ♦ 进行连接运算前,对关系适当预处理 ♦ ………..
19
§7.2.3 关系代数表达式等价变换
12
§7.2.1 查询优化问题提出
假设1:外存:
Student:1000条,SC:10000条, 选修2号课程:50条
假设2:一个内存块装元组:10个Student, 或100个SC,
内存中一次可以存放: 5块Student元组,
1块SC元组和若干块连接结果元组 假设3:读写速度:20块/秒 假设4:连接方法:基于数据块的嵌套循环法
化和 查询执行
3
§7.1查询处理概述

语法分析与翻译器


查询处理开始之前,系统必须将查询语句翻译成 可使用的形式。 语法分析与翻译阶段的主要工作有:


检查用户查询的语法,利用数据字典验证查询中 出现的关系名、属性名等是否正确; 构造该查询语句的语法分析树表示,并将其翻译 成关系代数表达式。
4
§7.1查询处理概述
DB site1 site2
DB site3
10
§7.2集中式数据库查询优化

集中式数据库查询优化 查询优化问题的提出 查询优化策略 关系代数等价变换 关系代数查询优化实例 查询优化的一般步骤
11
§7.2.1 查询优化问题提出
一个用户查询,系统实现时均使用一个与之相应的 关系代数表达式去求解,同一查询等价关系代数表达 式的不同,就会出现不同的求解路线。 如:求选修了2号课程的学生姓名,SQL语句
13
§7.2.1 查询优化问题提出

读取Student和SC表的策略
Student表 内存缓冲区
10个Student元组 100个SC元组
SC表
第1-100个元组 第101-200个元组
第 一 个 五 块 第 二 个 五 块
第1-10个元组 第11-20个元组
第一块 第二块

共 一 万 个 选 课 记 录


查询执行计划与查询优化器
一个给定的查询任务,一般都会有多种计算结 果的方法 。如,考虑如下查询
求选修了2号课程的学生姓名,SQL语句
Select sname from s,sc where s.sno=sc.sno AND o=‘2’ 等价关系代数表达式如下: Q1=Пsname ( σs.sno=sc.sno ^ o=‘2’ (S X SC)) Q2= Пsname ( σo=‘2’ (S |><| SC) ) Q3= Пsname (S |><| σo=‘2’ ( SC) )
A1,…,An是E1的属性, B1,…,Bm是E2的属性
π A1,A2, …,An,B1,B2, …,Bm (E1×E2)≡ π A1,A2, …,An(E1)× π B1,B2, …,Bm(E2)
29
§7.2.3 关系代数表达式等价变换
l0. 投影对并的分配律
假设:E1和E2 有相同的属性名 π A1,A2, …,An(E1∪E2)≡ π A1,A2, …,An(E1)∪ π A1,A2, …,An(E2)
πA1,A2, ,An(бF (πA1,A2, ,An,B1,B2, ,Bm(E)))
25
§7.2.3 关系代数表达式等价变换
6. 选择对笛卡尔积的分配律
(1) 假设:F中涉及的属性都是E1中的属性
бF (E1×E2)≡бF (E1)×E2
(2) 假设:F=F1∧F2,并且F1只涉及E1中的属性, F2只涉及E2中的属性
30
§7.2.5 关系代数查询优化实例
求选修了2号课程的学生姓名 S(SNO,SNAME,AGE,SEX) SC(SNO,CNO,GRADE) 用关系代数表达式
Q1= Пsname ( σo=‘2’ (S |><| SC)) 转换为只含有选择、投影、并、差和笛卡尔积五种基本 运算关系代数表达式 Q1=Пsname ( σo=‘2’ ПL ( σs.sno=sc.sno (S X SC)) ) L=SNO,SNAME,AGE,SEX,CNO,GRADE
F1
E2) E2)
F2
E3 ≡ E1 E3 ≡ E1
(E2 (E2
F1
E3) E3)
F2
22
§7.2.3 关系代数表达式等价变换
3. 投影的串接定律
π A1,A2, ,An(π B1,B2, ,Bm(E))≡ π A1,A2, ,An (E)
假设: 1) E是关系代数表达式 2)Ai(i=1,2,…,n), Bj(j=l,2,…,m)是属性名
24
§7.2.3 关系代数表达式等价变换
5. 选择与投影的交换律
(1)假设: 选择条件F只涉及属性A1,…,An
бF (πA1,A2, ,An(E))≡ πA1,A2, ,An(бF(E)) (2)假设: F中有不属于A1, …,An的属性B1,…,Bm
π A1,A2, ,An ( бF (E))≡
1
§7.1查询处理概述

查询处理(query processing)是指从数据库 中提取数据的一系列活动。主要包括:
将用高层数据库语言(SQL)表示的查询语句翻译为 能在文件系统这一物理层次上实现的表达式 为优化查询而进行各种转换 查询的实际执行

2
§7.1查询处理概述

查询处理过程包括:语法分析与翻译、查询优
则 бF(E1×E2) ≡б F1(E1)×бF2 (E2)
26
§7.2.3 关系代数表达式等价变换
(3) 假设: F=F1∧F2,
F1只涉及E1中的属性,
F2涉及E1和E2两者的属性 бF(E1×E2)≡б
F2(бF1(E1)× 关系代数表达式等价变换
6
§7.1查询处理概述

查询执行引擎


查询执行引擎根据输入的查询执行计划,调用相 关算法实现查询计算,并将计算结果返回给用户。 有效地对内存缓冲区进行管理是影响查询执行性 能的非常重要的方面。
7
§7.1查询处理概述
查询优化是为查询选择最有效的查询 执行计划的过程,包括:


代数优化:力图找出与给定关系代数表达式等价 的但执行效率更高的一个表达式。 查询语句处理的详细策略的选择,例如选择执行 运算所采用的具体算法,选择将使用的特定索引 等等。
15
§7.2.1 查询优化问题提出
Q2= Пsname ( σo=‘2’ (S |><| SC) )
① 读取总块数= 2100块 读数据时间=2100/20=105秒 中间结果大小=10000 (减少1000倍) 写中间结果时间=10000/10/20=50秒 ②б : 读数据时间=50秒 ③П 总时间=105+50+50秒=205秒=3.4分
16
§7.2.1 查询优化问题提出
Q3= Пsname (S |><| σo=‘2’ ( SC) )
①б 读SC表总块数= 10000/100=100块 读数据时间=100/20=5秒 中间结果大小=50条 不必写入外存 ② 读Student表总块数= 1000/10=100块 读数据时间=100/20=5秒 ③П 总时间=5+5秒=10秒

共 一 千 个 学 生 记 录
10个连接后的元组


中间文件
第n块
14
§7.2.1 查询优化问题提出
Q1=Пsname ( σs.sno=sc.sno ^ o=‘2’ (S X SC))
① Student×SC 读取总块数= 读S表块数 + 读SC表遍数 * 每遍块数 =1000/10+(1000/(10×5)) ×(10000/100) =100+20×100=2100 读数据时间=2100/20=105秒 中间结果大小 = 1000*10000 = 107 (1千万条元组) 写中间结果时间 = 10000000/10/20 = 50000秒 ②б : 读数据时间 = 50000秒 ③П : 总时间 =105+50000+50000秒 = 100105秒 = 27.8小时
3){A1, A2, …, An}构成{Bl,B2,…,Bm}的子集
23
§7.2.3 关系代数表达式等价变换
4. 选择的串接定律 бF1 ( б F2(E))≡ бF1∧ F2(E)

选择的串接律说明 选择条件可以合并

这样一次就可检查全部条件。
4. 选择运算满足交换律 σF1(σF2(E))= σF2(σF1(E))
Select sname from s,sc where s.sno=sc.sno AND o=‘2’
等价关系代数表达式如下: Q1=Пsname ( σs.sno=sc.sno ^ o=‘2’ (S X SC)) Q2= Пsname ( σo=‘2’ (S |><| SC) ) Q3= Пsname (S |><| σo=‘2’ ( SC) )
31
§7.2.5 关系代数查询优化实例
Sname Cno = ‘ 2 ’
L
S.sno=SC.sno S
SC
32
§7.2.5 关系代数查询优化实例
1 将合取选择运算可分解为单个选择运算的序列。
相关文档
最新文档