4.1 关系系统
关系系统的定义
关系系统的分类
全关系系统 12条准则
4.2 关系系统的查询优化
查询优化概述
查询优化的一般准则
关系代数等价变换规则
关系代数表达式的优化算法
优化的一般步骤第 4章 关系系统及其查询优化第 4章
4.1 关 系 系 统关系系统定义支持关系模型的关系数据库管理系统简称关系系统。
1.下述关系的 DBMS不能称为关系系统
1)不支持关系数据结构的系统
2)支持关系数据结构,但无 δ,π,运算功能的系统
3)支持关系数据结构,有 δ,π,运算,但要求定义物理存取路径的系统可称为关系系统的 DBMS,当且仅当
1)支持关系数据结构(关系数据库)
2)支持 δ,π,运算,且不要求用户定义任何物理存取路径
4.1 关 系 系 统关系系统分类
4.全关系系统:
支持关系模型的所有特征。在关系完备系统的基础上,进一步支持实体完整性和参照完整性等。
DBⅡ,ORACLE,SYBASE,… 已接近这个目标。目前尚无全关系系统。
1.表式系统:
仅支持关系数据结构,不支持关系操作。
2.(最小)关系系统:
支持关系数据结构,支持 δ,π,∞ 运算,且不定义物理路径。
3.关系完备系统:
支持关系数据结构和所有关系代数操作(或功能上与关系代数等价)。
DBⅡ,ORACLE,SYBASE,… 属于这一类
4.1 关 系 系 统关系系统分类数据结构 数据操作 完整性约束表式系统 表 × ×
(最小 )关系系统 表 选择、投影,连接 ×
关系完备的系统 表 √ ×
全关系系统 √ √ √
4.1 关 系 系 统全关系系统 12条准则
0,一个关系型的 DBMS必须能完全通过它的关系能力来管理数据库
准则 1,信息准则。 关系型 DBMS的所有信息都应在逻辑一级上用一种方法即表中的值显式地表示
准则 2,保证访问准则。 依表名、主码、列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项。(独立于物理结构)
准则 3,空值的系统化处理。 支持 NULL的概念
准则 4,基于关系模型的动态的联机数据字典。 (以关系的形式存储元数据)
准则 5,统一的数据子语言准则。 一体化的统一的数据子语言
4.1 关 系 系 统全关系系统 12条准则
准则 6,视图准则。 所有理论上可更新的视图也应该允许由系统更新。
准则 7,高级的插入、修改、删除操作。 以关系为对象进行操作
准则 8,数据物理独立性
准则 9,数据逻辑独立性
准则 10,数据完整性的独立性。 用 DDL定义并存储在数据字典中,独立于应用程序
准则 11,分布独立性
准则 12,无破坏准则
4.2 关系系统的查询优化查 询 优 化 概 述
● 查询处理的过程查询语句查询输出关系代数表达式执行计划语法分析与翻译执行引擎优化器数据 有关数据的统计信息
4.2 关系系统的查询优化查 询 优 化 概 述
● 实际系统的查询优化步骤
1,将查询转换成某种内部表示,通常是语法树
2,根据一定的等价变换规则把语法树转换成标准(优化)形式
3,选择低层的操作算法
对于语法树中的每一个操作
根据存取路径、数据的尺寸、数据的存储分布、存储数据的聚簇等信息来计算各种执行算法的执行代价
选择代价小的执行算法
4,生成查询计划 (查询执行方案 )
4.2 关系系统的查询优化查 询 优 化 概 述
● 常用查询优化技术
用启发式规则来缩减查询计划的搜索空间
利用统计信息估算执行代价
基于代价
● 代价模型
集中式数据库
单用户系统:总代价 = I/O代价 + CPU代价
多用户系统:总代价 = I/O代价 + CPU代价 + 内存代价
分布式数据库总代价 = I/O代价 + CPU代价 [+ 内存代价 ] + 通信代价
4.2 关系系统的查询优化查 询 优 化 概 述
● 一个实例,求选 C2课程的学生名
SELECT SNAME
FROM Student,SC
WHERE Student.Sno=SC.Sno
AND Cno=‘C2’;
外存:
Student:1000条,SC:10000条,选修 2号课程,50条
一个内存块装元组,
10个 Student,或 100个 SC,内存中一次可以存放,5块 Student元组,
1块 SC元组和若干块连接结果元组
读写速度,20块 /秒
连接方法:基于数据块的嵌套循环法假设
4.2 关系系统的查询优化查 询 优 化 概 述
● 一个实例
1,Q 1= ПSname(бStudent.Sno=SC.Sno ∧ SC.Cno=‘c2‘(Student× SC))
① Student× SC
读取总块数 = 读 Student表块数 + 读 SC表遍数 * 每遍块数
= 1000/10+(1000/(10× 5)) × (10000/100) = 2100
读数据时间 =2100/20=105秒中间结果大小 = 1000*10000 = 107 (1千万条元组 )
写中间结果时间 = 10000000/10/20 = 50000秒
② б
读数据时间 = 50000秒
③ П
总时间 =105+ 50000+ 50000秒 = 100105秒 = 27.8小时
4.2 关系系统的查询优化查 询 优 化 概 述
2,Q 2= ПS name(бSC.Cno='2' (Student SC))
①
读取总块数 =2100块读数据时间 =2100/20=105秒中间结果大小 =10000 ( 减少 1000倍 )
写中间结果时间 =10000/10/20=50秒
② б
读数据时间 =50秒
③ П
总时间= 105+ 50+ 50秒= 205秒 =3.4分
● 一个实例
4.2 关系系统的查询优化查 询 优 化 概 述
3,Q 2= ПSname(Student бSC.Cno=' 2' (SC))
① б
读 SC表总块数 =10000/100=100块读数据时间 =100/20=5秒中间结果大小 =50条 不必写入外存
②
读 Student表总块数 =1000/10=100块读数据时间 =100/20=5秒
③ П
总时间= 5+ 5秒= 10秒
● 一个实例
4.2 关系系统的查询优化查询优化的一般准则
1,选择运算应尽可能先做
2,在执行连接操作前对关系适当进行预处理
3,投影运算和选择运算同时做
4,将投影运算与其前后的双目运算结合
5,选择运算和笛卡尔积运算 结合
6,提取公共子表达式
4.2 关系系统的查询优化关系代数等价变换规则
l,连接、笛卡尔积交换律
2,连接、笛卡尔积的结合律
3,投影的串接定律
4,选择的串接定律
5,选择与投影的交换律
6,选择与笛卡尔积的交换律
7,选择与并的交换
8,选择与差运算的交换
9,投影与笛卡尔积的交换
l0,投影与并的交换
4.2 关系系统的查询优化关系代数表达式的优化算法
1,分解选择运算
2,通过交换选择运算,将其尽可能移到叶端
3,通过交换投影运算,将其尽可能移到叶端
4,合并串接的选择和投影,以便能同时执行或在一次扫描中完成
5,对内结点分组
6,生成程序
4.2 关系系统的查询优化优化的一般步骤
1.把查询转换成某种内部表示
2.代数优化:把语法树转换成标准(优化)形式
3.物理优化:选择低层的存取路径
4.生成查询计划,选择代价最小的
4.2 关系系统的查询优化优化的一般步骤
student.Sno=Sc.Sno
Sc.Sno=‘2’
X
Student SC
Sname
x
student.Sno=Sc.Sno
Sc.Sno=‘2’
Sname
SCStudent
student SC
Join(student.Sno=SC.Sno)
Select(SC.Cno=‘2’)
Project(Sname)?
小 结
4.1 关系系统
关系系统的定义
关系系统的分类
全关系系统 12条准则
4.2 关系系统的查询优化
查询优化概述
查询优化的一般准则
关系代数等价变换规则
关系代数表达式的优化算法
优化的一般步骤
关系系统的定义
关系系统的分类
全关系系统 12条准则
4.2 关系系统的查询优化
查询优化概述
查询优化的一般准则
关系代数等价变换规则
关系代数表达式的优化算法
优化的一般步骤第 4章 关系系统及其查询优化第 4章
4.1 关 系 系 统关系系统定义支持关系模型的关系数据库管理系统简称关系系统。
1.下述关系的 DBMS不能称为关系系统
1)不支持关系数据结构的系统
2)支持关系数据结构,但无 δ,π,运算功能的系统
3)支持关系数据结构,有 δ,π,运算,但要求定义物理存取路径的系统可称为关系系统的 DBMS,当且仅当
1)支持关系数据结构(关系数据库)
2)支持 δ,π,运算,且不要求用户定义任何物理存取路径
4.1 关 系 系 统关系系统分类
4.全关系系统:
支持关系模型的所有特征。在关系完备系统的基础上,进一步支持实体完整性和参照完整性等。
DBⅡ,ORACLE,SYBASE,… 已接近这个目标。目前尚无全关系系统。
1.表式系统:
仅支持关系数据结构,不支持关系操作。
2.(最小)关系系统:
支持关系数据结构,支持 δ,π,∞ 运算,且不定义物理路径。
3.关系完备系统:
支持关系数据结构和所有关系代数操作(或功能上与关系代数等价)。
DBⅡ,ORACLE,SYBASE,… 属于这一类
4.1 关 系 系 统关系系统分类数据结构 数据操作 完整性约束表式系统 表 × ×
(最小 )关系系统 表 选择、投影,连接 ×
关系完备的系统 表 √ ×
全关系系统 √ √ √
4.1 关 系 系 统全关系系统 12条准则
0,一个关系型的 DBMS必须能完全通过它的关系能力来管理数据库
准则 1,信息准则。 关系型 DBMS的所有信息都应在逻辑一级上用一种方法即表中的值显式地表示
准则 2,保证访问准则。 依表名、主码、列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项。(独立于物理结构)
准则 3,空值的系统化处理。 支持 NULL的概念
准则 4,基于关系模型的动态的联机数据字典。 (以关系的形式存储元数据)
准则 5,统一的数据子语言准则。 一体化的统一的数据子语言
4.1 关 系 系 统全关系系统 12条准则
准则 6,视图准则。 所有理论上可更新的视图也应该允许由系统更新。
准则 7,高级的插入、修改、删除操作。 以关系为对象进行操作
准则 8,数据物理独立性
准则 9,数据逻辑独立性
准则 10,数据完整性的独立性。 用 DDL定义并存储在数据字典中,独立于应用程序
准则 11,分布独立性
准则 12,无破坏准则
4.2 关系系统的查询优化查 询 优 化 概 述
● 查询处理的过程查询语句查询输出关系代数表达式执行计划语法分析与翻译执行引擎优化器数据 有关数据的统计信息
4.2 关系系统的查询优化查 询 优 化 概 述
● 实际系统的查询优化步骤
1,将查询转换成某种内部表示,通常是语法树
2,根据一定的等价变换规则把语法树转换成标准(优化)形式
3,选择低层的操作算法
对于语法树中的每一个操作
根据存取路径、数据的尺寸、数据的存储分布、存储数据的聚簇等信息来计算各种执行算法的执行代价
选择代价小的执行算法
4,生成查询计划 (查询执行方案 )
4.2 关系系统的查询优化查 询 优 化 概 述
● 常用查询优化技术
用启发式规则来缩减查询计划的搜索空间
利用统计信息估算执行代价
基于代价
● 代价模型
集中式数据库
单用户系统:总代价 = I/O代价 + CPU代价
多用户系统:总代价 = I/O代价 + CPU代价 + 内存代价
分布式数据库总代价 = I/O代价 + CPU代价 [+ 内存代价 ] + 通信代价
4.2 关系系统的查询优化查 询 优 化 概 述
● 一个实例,求选 C2课程的学生名
SELECT SNAME
FROM Student,SC
WHERE Student.Sno=SC.Sno
AND Cno=‘C2’;
外存:
Student:1000条,SC:10000条,选修 2号课程,50条
一个内存块装元组,
10个 Student,或 100个 SC,内存中一次可以存放,5块 Student元组,
1块 SC元组和若干块连接结果元组
读写速度,20块 /秒
连接方法:基于数据块的嵌套循环法假设
4.2 关系系统的查询优化查 询 优 化 概 述
● 一个实例
1,Q 1= ПSname(бStudent.Sno=SC.Sno ∧ SC.Cno=‘c2‘(Student× SC))
① Student× SC
读取总块数 = 读 Student表块数 + 读 SC表遍数 * 每遍块数
= 1000/10+(1000/(10× 5)) × (10000/100) = 2100
读数据时间 =2100/20=105秒中间结果大小 = 1000*10000 = 107 (1千万条元组 )
写中间结果时间 = 10000000/10/20 = 50000秒
② б
读数据时间 = 50000秒
③ П
总时间 =105+ 50000+ 50000秒 = 100105秒 = 27.8小时
4.2 关系系统的查询优化查 询 优 化 概 述
2,Q 2= ПS name(бSC.Cno='2' (Student SC))
①
读取总块数 =2100块读数据时间 =2100/20=105秒中间结果大小 =10000 ( 减少 1000倍 )
写中间结果时间 =10000/10/20=50秒
② б
读数据时间 =50秒
③ П
总时间= 105+ 50+ 50秒= 205秒 =3.4分
● 一个实例
4.2 关系系统的查询优化查 询 优 化 概 述
3,Q 2= ПSname(Student бSC.Cno=' 2' (SC))
① б
读 SC表总块数 =10000/100=100块读数据时间 =100/20=5秒中间结果大小 =50条 不必写入外存
②
读 Student表总块数 =1000/10=100块读数据时间 =100/20=5秒
③ П
总时间= 5+ 5秒= 10秒
● 一个实例
4.2 关系系统的查询优化查询优化的一般准则
1,选择运算应尽可能先做
2,在执行连接操作前对关系适当进行预处理
3,投影运算和选择运算同时做
4,将投影运算与其前后的双目运算结合
5,选择运算和笛卡尔积运算 结合
6,提取公共子表达式
4.2 关系系统的查询优化关系代数等价变换规则
l,连接、笛卡尔积交换律
2,连接、笛卡尔积的结合律
3,投影的串接定律
4,选择的串接定律
5,选择与投影的交换律
6,选择与笛卡尔积的交换律
7,选择与并的交换
8,选择与差运算的交换
9,投影与笛卡尔积的交换
l0,投影与并的交换
4.2 关系系统的查询优化关系代数表达式的优化算法
1,分解选择运算
2,通过交换选择运算,将其尽可能移到叶端
3,通过交换投影运算,将其尽可能移到叶端
4,合并串接的选择和投影,以便能同时执行或在一次扫描中完成
5,对内结点分组
6,生成程序
4.2 关系系统的查询优化优化的一般步骤
1.把查询转换成某种内部表示
2.代数优化:把语法树转换成标准(优化)形式
3.物理优化:选择低层的存取路径
4.生成查询计划,选择代价最小的
4.2 关系系统的查询优化优化的一般步骤
student.Sno=Sc.Sno
Sc.Sno=‘2’
X
Student SC
Sname
x
student.Sno=Sc.Sno
Sc.Sno=‘2’
Sname
SCStudent
student SC
Join(student.Sno=SC.Sno)
Select(SC.Cno=‘2’)
Project(Sname)?
小 结
4.1 关系系统
关系系统的定义
关系系统的分类
全关系系统 12条准则
4.2 关系系统的查询优化
查询优化概述
查询优化的一般准则
关系代数等价变换规则
关系代数表达式的优化算法
优化的一般步骤