数据库课件第10章

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



大学信息学院IDM实验
10.1.5 其他操作
1.复杂消重操作 对于重复的记录,我们可以采用排序方法或者hash索引方法 来消除重复. (1)使用外部归并排序来消重 (2)使用hash索引来消重 2.投影操作 一般投影操作可以分为两步 第一步:对每个记录作投影,清除不需要的属性值 第二步:如果所得结果关系中有重复记录,删除重复记录 3.集合操作 集合操作R∪S,R∩S,R-S的实现有两种算法:一种基于排序, 另外一种基于哈希函数

大学信息学院IDM实验
10.1 查询处理
数据库原理与设计

大学信息学院IDM实验
10.1.1 查询代价的评估
数据库原理与设计

大学信息学院IDM实验
数据库原理与设计 为了实现可能出现在查询执行策略中的不同类型的关系 操作,DBMS就必须包含实现这些操作的算法.对每一种 操作或操作的组合,一般都会有一种或多种执行这个操 作的算法.但是一种算法可能只适用于特定的存储结构 或存取路径,只有当操作涉及的文件中包含特定的存取 路径时,才能使用这种算法. 选择, 下面分析实现选择,排序,连接和其他关系操作 选择 排序,连接和其他关系操作的典型 算法和算法开销.
取反:选择 σ θ ( R ) 的结果就是关系R中对条件求值为假的记录的集 合.如果没有空值的存在,该结果就是那些不在中的记录的集合.
(1)无析取的选择 (2)有析取的选择

大学信息学院IDM实验
10.1.3 排序操作
数据库原理与设计 1.排序操作对于数据访问的意义 2.排序的种类 根据待排序的整个关系是否在内存的情况,分为外排 序和内存中的排序.待排序的整个关系完全被内存容 纳时,此时所使用的排序技术,如快速排序叫内存中 的排序.对不能全部放在内存中的关系进行排序称为 外排序.如外部归并算法. (1)两路归并排序算法
的子文件读入内存进行 写回磁盘; )
;


IDM
10.1.3 排序操作
数据库原理与设计
(2)N路归并排序算法
输入:包含 M 个数据页的无序关系 R,分成 M B 个小文件 输出:排序后的关系 R 过程: i=0; if (i< M B ) then{
N 归 并
将子文件 Ri 读入内存进行排序; 将排好序的子文件 Ri 写回磁盘; i++; } j=0; if( j < log B 1 M B + 1 )then{// log B 1 M B + 1 为归并趟数 repeat{ 将 B-1 个未归并的子文件读入内存进行归并; 将归并结果写回磁盘; )until(所有的段都已归并) } j++;

大学信息学院IDM实验
10.1.2 选择操作
数据库原理与设计
选择操作就是从表中查找满足条件的记录,它是由文件扫描加上匹 配选择的条件两个步骤所构成的搜索算法. 1.选择操作的基本实现算法 (1)线性查找的代价和实现方法 (2)二分查找算法的代价和实现方法 2.使用索引的选择操作 (1)等值比较的B+树索引选择算法 键属性等值比较 非键属性等值比较 (2)等值比较的哈希索引选择算法 键属性等值比较 非键属性等值比较

大学信息学院IDM实验
10.1.2 选择操作
数据库原理与设计
3.具有比较的选择查询 (1)主索引比较 (2)辅助索引比较 4. 复杂查询的实现 复杂查询是指在选择条件中有更复杂的选择谓词,包括合取,析 取,取反,索引的合取,组合索引的合取等. 合取:合取选择是形如 σ θ1 ∧θ2 ∧L∧θn ( R ) 析取:析取选择是形如 σ θ1 ∨θ2 ∨L∨θn ( R )
查询优化的必要性( 查询优化的必要性(续)
数据库原理与设计
假设1 外存: 假设1:外存:
Student:1000条,SC:10000条 选修2号课程:50条 Student:1000条,SC:10000条, 选修2号课程:50条
假设2 一个内存块装元组:10个 假设2:一个内存块装元组:10个Student, :10 或100个SC, 100个
内存中一次可以存放: 5块Student元组, 元组, 内存中一次可以存放: 5块Student元组 1块SC元组和若干块连接结果元组 SC元组和若干块连接结果元组 假设3 读写速度:20块 假设3:读写速度:20块/秒 假设4 连接方法:基于数据块的嵌套循环法 假设4:连接方法:基于数据块的嵌套循环法
数据库原理与设计
第十章 查询处理和查询优化
兰州大学信息科学与工程学院

大学信息学院
第十章 查询处理和查询优化 数据库原理与设计 查询处理器是DBMS的核心组成部分之一,主要接受用 查询处理器 户的 SQL 查询语句,对语句进行语法分析和有效性检 查,建立查询的内部表示——关系代数表达式或查询树, 设计执行计划,选择执行得最快或代价最低的查询计划, 执行该查询计划,得到查询结果. 一般情况下,每个查询都会有很多侯选的执行计划, 查询优化就是从中选择适当的但不一定是最优的查询处 理策略的过程.



大学信息学院IDM实验
10.1.4 连接操作
数据库原理与设计 (2)块嵌套循环连接 按照缓冲区的大小,块嵌套循环连接算法可以分两 种情况:
第一种:假设有足够的内存可以容纳下其中较小的关 系(比如R),并且还剩余至少两个额外的缓冲区页 第二种:如果没有足够的内存可以容纳整个关系R时, 可以把关系R按照缓冲区的大小等分成块,对R的每个 块扫描关系S
(3)使用索引的嵌套循环连接

大学信息学院IDM实验
10.1.4 连接操作
2.归并连接(排序归并连接)输入:关系 R,S 数据库原理与设计
排 序 归 并 连 接 算 法 描 述
输出:满足连接条件 ri=sj 的记录集 过程: if R 在属性 i 上无序 then 对关系 R 在属性 i 上进行排序; if S 在属性 j 上无序 then 对关系 S 在属性 j 上进行排序; Tr=关系 R 中的第一条记录; Ts=关系 S 中的第一条记录; Gs=关系 S 中的第一条记录; While Tr≠eof and Ts≠eof do{ While Tri <Gsj do Tr=关系 R 中 Tr 后的下一条记录; While Tri >Gsj do Gs=关系 S 中 Ts 后的下一条记录; Ts=Gs; While Tri =Gsj do{ Ts=Gs; While Tri =Tsj do{ 将<Tr,Ts>添加都连接结果; Ts=关系 S 中 Ts 后的下一条记录; } Tr=关系 R 中 Tr 后的下一条记录; }
读数据时间=2100/20=105秒 读数据时间=2100/20=105秒 =2100/20=105

大学信息学院IDM实验
பைடு நூலகம்
不同的执行策略,考虑I/O时间 不同的执行策略,考虑I/O时间 I/O
数据库原理与设计 1000* 千万条元组) 中间结果大小 = 1000*10000 = 107 (1千万条元组) 50000秒 写中间结果时间 = 10000000/10/20 = 50000秒 10000000/10/ ②б 50000秒 读数据时间 = 50000秒 ③П 100105秒 总时间 =105+50000+50000秒 = 100105秒 105+50000+50000秒 27. = 27.8小时

大学信息学院IDM实验
10.1.3 排序操作
数据库原理与设计
两 归 并
输入:包含 M 个数据页的无序关系 R,分成 n 个小文件 输出:排序后的关系 R 过程: i=0; if (i<n){ 将子文件 Ri 读入内存进行排序; 将排好序的子文件 Ri 写回磁盘; i++; } j=0; if(j< log 2 M + 1 ){// log 2 M + 1 repeat{ 将 将 } until( } j++; 个 的 数

大学信息学院IDM实验
10.1.4 连接操作
数据库原理与设计 1.满足不同条件的连接操作的处理方式和代价 (1)嵌套循环连接
输入:关系 R 和 S,及它们的记录数 NR,NS 输出:满足连接条件 ri=sj 的记录集 过程: for(i=0;i<NR;i++) for(j=0;j<NS;j++){ 测试记录对(ri,sj)是否满足连接条件 ri=sj; 如果满足,把<ri,sj>加到结果中; }
I/O代价 CPU代价 总代价 = I/O代价 + CPU代价
多用户系统
I/O代价 CPU代价 总代价 = I/O代价 + CPU代价 + 内存代价
分布式数据库
I/O代价 CPU代价 代价[+ 内存代价] 总代价 = I/O代价 + CPU代价[+ 内存代价] + 通信代价

大学信息学院IDM实验

大学信息学院IDM实验
10.1.4 连接操作
3.使用hash索引连接 数据库原理与设计
输入:关系 R,S 输出:满足连接条件 ri=sj 的记录集 过程: //将关系 R 划分为 k 个部分 foreach 记录 r in R do{ n = h(ri) ; 将 ri 添加到缓冲区 Rn 中; } //将关系 S 划分为 k 个部分 foreach 记录 s in S do{ n = h(sj) ; 将 sj 添加到缓冲区 Sn 中; } //连接阶段 for n =1,…,k do{ 读 Sn,在内存中建立起 hash 索引; foreach 记录 r in Rn do{ 检索 Sn 的 hash 索引,定位所有满足 ri=sj 的记录; foreach 匹配的记录 s in Sn do{ 把<r,s>加到结果中; } } }
兰 大学信息学院IDM实验
10.1 查询处理
数据库原理与设计

大学信息学院IDM实验
10.1 查询处理
数据库原理与设计
查询处理器将为每个查询块制定若干执行计划.给定 的查询的不同执行计划将有不同的执行代价. 选定,构造具有最小查询执行计划代价的查询计划是 系统来完成的.选定查询计划以后,便用该计划来执 行查询并输出查询结果.
二,一个实例 数据库原理与设计
例:求选修了课程C2的学生姓名 求选修了课程C
SELECT Student.Sname Student. FROM Student, SC Student.Sno=SC. WHERE Student.Sno=SC.Sno SC.Cno='2'; AND

大学信息学院IDM实验
兰 大学信息学院IDM实验
数据库原理与设计
10.1.5 其他操作
数据库原理与设计
4.外连接 外连接操作可分为三种:左外连接,右外连接和全连接. 实现外连接有两种策略,第一种是计算匹配的记录,然后把其它 记录并入外连接的结果中;第二种是对连接算法进行适当的修 改. (1)计算相应的连接,然后将适当的记录加入到连接结果中以得到 外连接结果.例如:要进行右外连接运算可以用与左外连接类 似的方法实现.要实现全外连接运算,可以先做自然连接运算 然后加入左,右外连接的额外记录. (2)对连接算法进行修改.自然外连接与具有等值连接条件的外连 接可以通过扩展归并连接算法与散列连接算法来实现.对归并 连接加以扩展,可以用来计算完全外连接.过程如下:当两个 关系的归并完成后,将两个关系中那些不与另一个关系的任何 记录相匹配的记录在填充空值后写到结果中.

大学信息学院IDM实验
执行策略1 执行策略1
数据库原理与设计 Q1= ПSname(бStudent.Sno=SC.Sno Student.Sno=SC.
∧SC.Cno='2 ∧SC.Cno='2'
(Student× (Student×SC))
Student× ① Student×SC
Student表块数 SC表遍数 读取总块数 = 读Student表块数 + 读SC表遍数 * 每遍块数 =1000/10+(1000/(10×5)) ×(10000/100) =1000/10+(1000/(10× 100+20×100= =100+20×100=2100

大学信息学院IDM实验
10.2 查询优化 数据库原理与设计
一,查询优化概述 查询优化的必要性 –查询优化极大地影响RDBMS的性能. 查询优化的可能性 –关系数据语言的级别很高,使DBMS可以从关 系表达式中分析查询语义.

大学信息学院IDM实验
代价模型
数据库原理与设计
集中式数据库 单用户系统
相关文档
最新文档