从数据库里检索数据所涉及的活动称为查询处理。对于一个高级查询,DBMS可以使用不同的技术处理、优化和执行。在高级查询语言里,任何一个给定的查询可以有不同的处理方式,每个查询需要的资源也是不同的。图6.1SQL查询命令的执行步骤......
2025-09-30
因为我们面临的是分布式数据库的分配模式,所以要面对一个全局查询。要确定如何从不同的数据片上重构全局关系的问题,需要先说明一个概念,这个概念为构造执行体(materialization)。所谓构造执行体,是指如何从分布环境中分派到多个节点,并且从有副本存在的分片关系中选出(重构)一个全局关系作为执行体的问题。因为有多种组合选择,构造执行体就是从中选出(重构)一个组合来构建一个全局关系。
确定构造执行体以后,查询处理器的下一个任务是实施分布查询优化。所谓优化,就是在许多可供选择的方法中选取一种访问代价最小的方法。
在分布式数据库中,查询优化的目的是,最快地找出存储在分布式数据库中所需要的数据,并且要求成本最低、时间最少、效率最高。
要选择最佳策略,则涉及对各种候选执行序的执行开销的预测。执行开销可以看成是I/O、CPU和通信开销的加权组合。一般的考虑是忽略本地处理开销,而把通信开销(排除I/O和CPU开销)看成是决定性的。而估算执行开销的重要输入是数据片的统计信息、关系概貌及操作结果的估算值。
涉网查询优化的问题主要包括三部分,其过程简述如下。
●确定和选取数据片(fragments)的物理副本,执行查询,并给这些数据片指定查询表达式。这就是确定执行体(materialization)问题,即选择分布式数据库数据对象的一份非冗余的完整(关系)副本。
●选择运算的执行顺序,确定较好的连接、半连接和并运算序列。这里的执行顺序是指查询代数变换后产生的运算符树所定义的一种运算偏序。然而,这并不是一种完整地解决优化问题的方法,因为还要指定在树的同一层上所执行的子表达式的求值顺序。此外,从树叶向树根攀登也不一定能获得最好的解决方法。因此,这里还涉及查询树的扫描策略问题。
●选择执行每一种运算(如连接运算)的具体实现方法。
本节我们讨论涉网查询优化的任务。查询优化是指生成一个查询执行计划(query execution plan,QEP)的过程,查询执行计划是一种查询执行策略。数据库管理系统的查询优化器是一个软件模块,负责完成查询优化。查询优化器可以由三个成分构成:搜索空间、成本模型和搜索策略。
搜索空间是关于输入查询可能执行计划的集合。这些执行计划是等价的,虽然执行序/方法不同,但产生的结果相同,从而在性能上有差别。成本模型是对这些给定的执行计划进行估算。搜索策略负责探索搜索空间和使用成本模型来选择最佳计划。
查询优化过程可以用图7.17来表示。由图可见,用户输入查询信息后首先经历的是生成搜索空间,然后通过评估来确定搜索策略,这个过程会反复。一旦搜索策略确定,就生成查询执行计划(QEP)。生成搜索空间的基础是一套转换规则,确定搜索策略的依据主要是成本模型。
图7.17 查询优化过程
1.搜索空间
查询执行计划是算符树的一种表现形式,对执行序有更明确的表示,有丰富的附加信息,如为每个操作选择最佳实施方法。对于一个给定查询,查询空间按照转换规则生成的等价算符树的集合来进行定义。为了方便又不失一般性,忽略本地运算,这里只考虑连接运算和笛卡儿积运算。
图7.18 等价连接树
【例7.17】 考查如下查询:
Se l ec t sname,cname
f rom Student,SC,COURSE
where Student.sno=SC.sno
AND SC.cno=COURSE.cno
忽略一元运算(选择、投影),结果只剩下以下两个连接运算。
(1)Student∞sno=sno SC。
(2)SC∞cno=cno COURSE。
图7.18是例7.17这个查询的3棵等价连接树。按照每个算符的成本估算,可以为每棵树计算成本开销。
对一个复杂查询(涉及许多关系和算符)来说,等价算符树的数目会很多。例如,对N个关系来说,通过交换律和结合律生成的等价连接树的数目为O(n!)。如果要对大型搜索空间进行探索,则会有很强的时间限制,有时成本会远高于实际执行的时间成本。因此,要限制搜索空间的大小。首先是使用启发式方法,即执行选择和投影操作。其次是避免执行笛卡儿积操作。再次是观察连接树的形状。一种典型的形状是线性连接树,另一种形状是灌木丛连接树(见图7.19)。线性连接树的特点是每个算符至少有一个操作数为一个基关系(树叶)。灌木丛连接树很普遍,其中,许多算符的操作数不涉及基关系,而是以中间关系形式出现。线性连接树的搜索空间可以归结为O(2n)。
图7.19 连接树的两种主要形态
2.搜索策略
查询优化器最常用的搜索策略是动态规划,称为确定策略(deterministic strategy)。搜索策略的确定从基关系开始,每一步连接一个关系,直到获得完整的计划,如图7.20所示。动态编程在选择“最佳”计划前,先采用广度优先算法构造所有可能的计划。为了减少优化成本,有些明显不合理的计划马上去掉。相比之下,贪心算法则采用深度优先算法。
动态规划耗费是极大的,但能够保证找出所有“最佳”计划。它要承受可接受的优化成本(依据空间和时间),条件是查询涉及的关系数不是很大。如果涉及的关系数大于5或6,那么开销会显著增加。为此,有人建议采用随机策略(randomized strategies)。这个策略可以降低优化的复杂性,但无法保证找出所有计划中的“最佳”计划。随机策略允许优化器在优化时间和执行时间之间寻找折中。(https://www.chuimin.cn)
有些问题是优化器必须考虑的,典型的如分布成本模型和成本函数。
图7.20 确定搜索策略的优化步骤
(1)分布成本模型。优化器分布成本模型包括预测算符开销的成本函数、统计数据、基关系和估算中间关系大小的公式等。
(2)成本函数。分布执行策略的开销可以用总(耗费)时间或响应时间来表示。总时间是全部时间成分的总和,响应时间是从开始到完成查询跨越的时间间隔。确定总时间的一般公式如下:
Ttotal-time=TCPU#insts+TI/O#I/O+T MSG#msgs+T TR#bytes
这里用两个成分来量度本地处理时间,TCPU是CPU指令的时间,TI/O是磁盘I/O的时间。#为变量表示数目,如#insts表示执行的机器指令数,#I/O表示磁盘的I/O存取数,#bytes表示消息传递的字节数。通信时间用两个成分来表述:TMSG为启动和接收一个消息需要的固定时间,T TR为从一个节点到另一个节点传输一个数据单元花费的时间。数据单元以字节计(#bytes为所有消息大小的总和),但单元的单位可不同。一般假设T TR是常数。当然,这也不是很精确,因为广域网上不同节点间数据单元传送所需的时间是不一样的。但为了简化,不得不把它看成是常数。传输#bytes数据的通信开销可以看成是线性函数,例如:
TC(#bytes)=T MSG+T TR#bytes
成本一般用时间来表示,当然也能转换成其他单位,如货币。
在分布式数据库系统里,成本因素有新的含义,原因是网络的拓扑结构会严重影响它。广域网(如Internet)里,通信时间一般成为决定因素。局域网里,本地处理开销和通信时间之间的差异不会像广域网里那么大。这样,大多数早期的分布式数据库系统在设计时忽略了本地处理开销,而只关注通信开销的最小化。为局域网设计的分布式数据库系统,同时考虑3个成本成分(CPU开销、传输消息数开销和传输字节数开销)。
概括来说,在集中式数据库中,查询优化主要强调两点:I/O操作的数量,执行查询所要求的CPU时间。
在分布式数据库中,还要增加节点之间传输的数据量及相关开销。有些系统仅考虑传输代价,原因是通信和本地处理的差异很大(本地处理很快,而通信延迟很大),尤其是广域网,差异更大。其思路如下。
●对分布式数据库系统,考虑传输代价是理所当然的。一般传输代价是两个节点之间发送数据量的函数。
●可把分布式查询优化分解为两个互相独立的问题:在节点之间访问策略的分配,只需考虑传输便可实现这种分配;在每个节点确定局部访问策略,这可采用传统的集中式数据库方法。
如果只考虑传输代价,则可以分两种情况考虑,即考虑传输费用和传输延迟。
●当考虑传输费用时,对应用要求的所有传输费用求和,便可得到应用性能的度量。这种方法相当于通信网络中总的传输开销最小化。
●当考虑传输延迟时,使用应用的启动和完成之间所经过的时间来度量该应用性能。缩短延迟相当于提高执行的并行程度,但缩短延迟与总的传输开销的最小化不一定相当。
这样,可以使用两个公式来表示这两个参数:其中:C0、C1和D0、D1是与系统有关的约束条件,C0相当于在两个节点之间启动一个传输的固定费用,C1是网络范围内的单位传输费用[2],D0为建立一个连接的固定时间,D1是网络范围内的单位传输速率;x是网络中需要传输的数据量。
因此,考虑地点相关性,C0和D0就不再是固定不变的了,式(7.1)和式(7.2)演变成如下两式:其中:i和j分别表示传输的源和目的地。
【例7.18】 使用图7.21来说明总成本和响应时间的区别,计算选择在节点3,该节点获取来自节点1和节点2的数据。为了简化,这里只考虑通信费用。
图7.21 查询所需的数据传输(样例)
假设TMSG和T TR用时间单位来表示,从节点1传到节点3和从节点2传到节点3的数据分别是x数据单位和y数据单位,查询的总成本(总时间)为(忽略初始费用):
总时间=2TMSG+T TR(x+y)
查询的响应时间为:
响应时间=max{T MSG+T TRx,T MSG+T TRy}
因为传输是并行实施的,所以取这两次传输中最大的量就是响应时间。
增加并行执行度可以将响应时间最小化。但总执行时间不见得为最短,相反,响应时间最短会导致总成本增加。总时间最短意味着资源的使用得到改善,系统吞吐量增加。
相关文章
从数据库里检索数据所涉及的活动称为查询处理。对于一个高级查询,DBMS可以使用不同的技术处理、优化和执行。在高级查询语言里,任何一个给定的查询可以有不同的处理方式,每个查询需要的资源也是不同的。图6.1SQL查询命令的执行步骤......
2025-09-30
查询分解是把分布演算查询映射到一个全局关系的代数查询上。从代数优化看,使用直接分步骤的算法可以获得一个“好的”结果,但是,进一步看未必是最佳的。换句话说,每次选最好的,不见得最终结果是最佳的。就像有一筐苹果,每天选一个质量最好的苹果吃,不见得是最好的吃法。数据定位决定查询涉及哪些数据片,并将分布查询转化成分片查询。......
2025-09-30
查询分解的最后一步是将查询重新写成关系代数的形式。重构关系代数查询以改进性能。树根则代表查询结果。其次,根节点是关于结果属性的投影操作,显示在Select子句中。 查询“那些在CAD/CAM项目中工作了1年或2年的名字不叫李林的雇员”,其SQL语句如下:Select enamef rom PROJ,EMP_PROJ,EMPwhere EMP_PROJ.eno=EMP.enoAND EMP_PROJ.pno=PROJ.pnoAND ename≠"李林"AND PROJ.pname="CAD/CAM"AND这可以映射成图7.2所示的算符树。应用变换规则,从这棵算符树可以派生出许多不同的树。如何重写,请看下面即将介绍的等价变换。图7.2算符树的例子......
2025-09-30
查询处理的目标是按照分布式上下文将基于分布式数据库的高级查询转换成采用低级语言表达的、更有效的、基于局部数据库的执行策略。响应时间是执行查询获得响应所经历的时间。集中式数据库系统中,总开销主要由CPU开销和I/O开销构成。CPU开销是指数据在内存时发生的计算开销。通信开销则是参与执行查询的节点间交换数据所需的开销。大部分早期的分布式查询处理的建议方案都强调通信开销远大于本地开销,因此可以忽略本地开销。......
2025-09-30
应用千变万化,当用户输入的查询任意复杂时,这取决于语言提供的能力。规范化的目标是将查询转换成规范形式,以便做进一步处理。例如:age>18 AND deptno=9 AND sex="mal e"表示选择年龄在18岁以上、属于系别编号为9和男性的(学生)。这种形式可以简化成:(p11∨p12∨…∧pmn)规范化时,谓词变换起了关键作用,以下是一些无量词谓词的变换公式。所谓规范化,就是将查询构造成合取式或析取式,典型的是转换成析取式。......
2025-09-30
本节将简述无人炮塔分类和研制发展情况。图6.3所示分别为安装在装甲车辆上的不同类型的无人炮塔的示意图。这种带武器支座的无人炮塔构造能使自身的质量比同类普通炮塔的质量减轻约20%。遥控式无人炮塔。图6.4英国1968年研制的COMERS 75实验坦克支座式无人炮塔的试验结果达不到预期性能,遥控式无人炮塔的研制开始出现在20世纪80年代。1984年,美国通用动力公司最早试吃螃蟹,在M1坦克底盘制造的试验台上安装无人遥控炮塔。......
2025-09-29
图3.1软件开发过程数据库设计的过程与软件开发的过程类似。下面先来看一下集中式数据库设计的情况。在分布式数据库系统中,集中式数据库设计的问题依然存在,且有以下两个新的问题需要考虑。这个过程就是确定如何将全局关系划分成水平、垂直或者混合的数据片。数据片的分配,即决定数据片如何映射到物理镜像上,决定如何复制数据片。数据片的分配问题则研究已久,当然,过去研究的则是“文件分配”问题。......
2025-09-30
可用以衡量塑料强度相关性能的指标主要有拉伸强度、断裂伸长率、弯曲强度及其弯曲模量等。关于塑料增强的机理,目前还未取得共识,这里只介绍几种常见的理论。④叠层增强技术:采用同一种或者不同种塑料,通过特殊的叠层工艺复合方式,实现材料的多级叠层复合,达到增强的效果,目前可以实现超过1万层的复合。......
2025-09-29
相关推荐