新闻中心

kaiyun登录入口登录网站优化查询优化的四个层次浅谈分布式数据库查询优化

2024-02-10
浏览次数:
返回列表

  kaiyun登录入口登录1.数据的物理分布性:分布式数据库系统中的数据不是集中存储在一个站点上,而是分散存储在由计算机网络连接起来的多个站点上,而且用户是感觉不到这种物理上的分散的。分布式数据库的数据具有物理分布性,这是与集中式数据库系统的最大区别之一。

  2.数据的逻辑整体性:分布式数据库系统中的数据物理上是分散在各个站点中,但这些分散的数据逻辑上却构成一个统一的整体,它们被分布式数据库系统的所有用户共享,并由一个分布式数据库管理系统统一管理,它使得“分布”对用户来说是透明的。这是分布式数据库的“逻辑整体性”的特点,也是与分散式数据库的最大区别。

  (1)如果是水平分片,把分片的限定语句(分片条件)与选择条件进行比较,判别它们之间是否存在矛盾,去掉存在矛盾的片段,如果只剩下一个水平分片的片段,就可以去掉一个“并”操作(至少可以减少一次并操作),达到优化查询的目的。

  (2)如果是垂直分片,把片段中的属性集与投影操作涉及的属性集进行比较,去掉无关的所有片段。如果只剩下一个垂直分片的片段,就可以去掉一个“连接”操作(至少可以减少一次连接操作),以达到优化查询的目的。

  4.不同站点间数据流动的顺序:在多站点中,合理地选择数据的流向,可以大大减少通信量,以便达到减少查询代价的目的。

  基于关系代数等价变换优化算法的基本原理:把查询问题转变为关系代数表达式,分析得到查询树(语法树),进行从全局到片段的变换得到基于片段上的查询树,然后利用关系代数等价变换规则的优化算法,尽可能先执行选择和投影操作。这样,一方面可以减少其后操作的操作量,另一方面可以减少操作次数。对该查询树进行优化,从而达到查询优化的目的。

  数据本地化(data localization)是把一个在全局关系上的查询进行具体化到合适片段上的查询。这一变换所需要信息在分片模式和片段的分配模式中获得。

  全局优化((global optimization)输入是分片查询,全局优化是找出分片查询的最佳操作次序,包括使得代价函数最小。全局优化一个重要方面是关于连接操作的优化,全局优化处理层输出是一个优化的、片段上的关系代数查询。这层转换所需要信息来自数据库的统计信息,包括各站点片段统计信息、资源信息和通信信息等。

  (2)对基本算法的主迭代所构成的半联接程序的流程图进行修正。因为一开始的(或某一个)半联接缩减程序的代价很高,如有,这时可以把S进行缩减后再进行半联接缩减,即可修正半联接的操作序。

  在SDD-1算法中,采用一种启发式方法来完成一系列联接查询执行的压缩阶段[24]。该算法由4-1给出,这种算法可以产生一个“好的”半联接执行序列。

  基于直接连接操作的查询优化是一种完全在连接的基础上考虑查询处理的策略:有时直接连接也可能会产生好的效果,特别是当有以下情况时:

  例如,对一个涉及到存储在不同场地的二个关系进行连接的查询,首先把一个关系传送给第二个关系所在地,然后进行连接运算;再把运算结果传送到第二个关系所在地,计算它们的连接并产生查询结果。

  <布式查询处理的层次结构:

  分布式查询处理按不同的层次执行,符合分布式数据库系统的层次结构。分布式查询处理可分为如下所示四个层次结构。

  查询分解(query decomposition)是将查询问题(如SQL语句)转换成一个定义在全局关系上的关系代数表达式。这一层的做法与集中式DBMS相同,因为并未涉及分布问题。本层转换所需要信息在全局概念模式中得到。

  究竟用直接连接还是半连接方案,取决于数据传输和局部处理的相对费用。一般,如果认为传输费用是主要的,那么采用半连接策略比较有利,如果认为局部处理费用是主要的,则采用直接连接策略比较有利。

  SDD-1算法采用了半联接程序处理联接操作}zs}。它的查询优化就是对逻辑关系使用基本的运算(如选择,投影,半联接)操作来缩减。

  分布式数据库中的查询过程可分为逻辑分解、评议转换和优化组合几分。分布式数据库系统中,用户可以用全局查询评议对多个数据库同时进行查询,即为全局查询。全局查询一般经过以下几个过程:

  首先,对全局查询进行逻辑分解成几个子查询,每个子查询对应一个局部数据;其次,若全局查询评议与局部查询评议不同,则进行语言的等价转换;最后,各个子查询的结果优化组合后返回。

  (3)结束:以若干次迭代以后的最后缩减关系的静态特性表为基础,进行站点选择(费用计算),决定执行查询的站点(可能与查询要求的站点不同)。

  在基本算法中,每次迭代时只考虑本次迭代时的“改善”,这种“改善”不一定最好。后优化有两种修正;

  (1)若最后一次半联接程序缩减关系的所在站点恰好是被选中的查询执行站点,则最后一次半联接可以取消;

  关系代数等价变换规则的优化算法:利用关系代数等价变换规则,把查询树中连接和合并操作尽可能上提(向树根方向移)。选择和投影操作尽可能下移(向树叶方向移)到片段的定义处。这就是说,尽可能先执行选择和投影操作,后执行连接和合并操作。经过选择和投影操作不但可以减少其后操作的操作量,而且还可以减少操作次数,这是因为:

  基于半连接操作的查询优化的思想是经过半连接操作,可减少操作关系的数据量,从而减少站点间数据的传输量。

  基于半连接操作的查询优化的基本思想:数据以整个关系在网络中传输,这显然是一种冗余的方法,在一个关系传输到另一场地后,并非每个数据都参与连接操作或都是有用,因此,不参与连接的数据或无用的数据不必在网络中来回传输。基于半连接的优化策略的基于原理就是采用半连接操作,在网络中只传输参与连接的数据。连接查询的优化问题几乎是分布式数据库的分布式查询优化算法的全部,在分布式数据库中连接查询的主要手段是半连接技术,各种不同算法的差异主要是在连接顺序上,即在保证结果一致的情况下,以什么样的顺序将这些表连接起来最优。优化的对象一般数据传输量的总和。

  分布式查询处理问题是由E-Wong首先提出的,分布式查询处理的基本思想认为分布式查询处理是数据传递和局部处理相交织的过程,分布式查询处理策略由数据传递策略与局部处理策略组成;分布式查询处理的过程实质是利用数据传递策略和局部数据处理策略,把分布查询转化为局部查询的过程kaiyun登录入口登录。

  3.站点自治性:系统中的每个站点都具有独立性,能执行局部的应用请求,每个站点又是整个系统的一部分,可通过网络处理全局的应用请求。

  分布式查询技术主要把用户提交的全局查询请求翻译为几个相关节点都可以识别的本地查询请求,以及把各个节点的查询结果汇总返回的问题,它包括分布式查询处理和分布式查询优化。分布式查询处理研究整个分布式查询处理的过程和策略;分布式查询优化研究查询策略的优化问题,即如何从多种方案中选择查询代价最少方案。

  2.以每个查询的响应时间最短为标准。响应时间就是从接收查询到完成查询所需要的时间。它既与通信时间有关,又与局部处理时间有关,而通信费用与所传输的数据量和通信次数成正比。

  目前分布式数据库的技术还很不成熟,分布式查询优化技术更是如此,再加上信息量查询要求的加大,人们注意到减少查询代价必要性。

  分布式查询处理作为分布式数据库研究主要问题之一,它是用户与分布式数据库之间的接口,在分布式数据库中由于数据的分布与冗余,使得数据在各站点间的传输代价成为查询处理的主要矛盾;另一方面,数据的分布与冗余也增加了查询的并发处理的可能性,从而可以缩短查询处理的响应时间,提高处理速度。因此,与集中式数据库相比,分布式查询处理增加了不少新内容与复杂性。

  1.操作执行的顺序:操作执行顺序的改变主要指关系运算及集合运算的改变,它们常常对铁性能产生重要的影响。

  2.关系的存取方法:在关系数据库系统中,关系或使用索引,如果关系中90%的要被访问,则扫描整个关系是较好的;如果只有30%的被访问,则使用索引是更为有效的方法。

  3.操作的执行算法(尤其是连接操作):连接操作是将两个关系在指定的公共属性上以相同值为依据进行合并,连接操作通常有多种:自然连接、造价连接、外连接和半连接等。

  局部优化((local optimization)由与查询有关片段的各个站点执行。它由该站点上的DBMS进行优化,采用集中式数据库系统中查询优化的算法,所需要信息来自于局部模式。

  分布式查询优化通常在分布式查询层次结构中的数据本地化层和全局优化层。数据本地化阶段一般采用的是基于关系代数等价变换的优化算法。而全局优化阶段采用的算法,可具体分为基于半连接算法的查询优化和基于直接连接算法的查询优化两大类。

  ②按半联接缩减程序的静态特性表分别计算其费用和收益,从一组的静态特性表中选取一个半联接程序,设为M;

  ③以M完成缩减后,又将产生一组新的静态特性表再进行计算,再从一组可取的静态特性表中选一个半联接程序,但是每个半联接程序只做一次(避免导致缩减程序太长、效率不高);

  SDD-1算法是基于爬I ( Hill Climbing)算法而形成的。它有五个主要特征,首先,采用半联接是最主要的,其次,各个局部站点没有重复,也不进行分片。此外,在它的代价计算中,不考虑最后一个站点传送代价。这是由于在它的查询策略中,当使用半联接来缩减操作数关系的基数,当最大限度的缩减以后,把所有关系送到可执行查询的站点上,这个站点不一定是查询所要求的结果站点。譬如说,若S是结果站点(经半联接缩减后建立的),;是查询要求的站点,S} I可能相同,可能不同,若不相同,则还有一次传送代价将S送到I。最后它还能同时减少最小化总时间和响应时间。

  不同的查询分解对应不同的系统性能,因此为了达到优化系统性能,需要相应查询优化器来确定一个相对较好的执行计划,最后启动查询计划。

  一个查询策略的选择是以执行查询的预期代价为依据的,由集中式系统大都运行在单个处理器的计算机上,所以查询执行总代价为CPU代价加I/O代价之外。分布式查询优化可用CPU代价、I/O代价、通信代价3个参数来徇,总代价为三者之和。在分布式数据库系统中,常以两种不同的目标来考虑查询优化:

  SDD-1算法有两部分组成:基本算法和后优化。基本算法基于爬山算法,是爬山算法的迭代。根据评估缩减程序的费用、效率、收益估算几个因素,给出全部的半联接缩减程序集,决定一个最有益的(收益大的)执行策略ES,但效率不一定高,然后选择一个装配站点Sa,将已缩减完的关系传送到装配站点Sa上进行联接;后优化,将基本算法得到的解进行修正,以得到更合理的执行策略。

  尽管集中式数据库系统从理论到实践都已取得了辉煌的成就,但人类社会的信息系统从结构上而言是分布式结构,特别是在军事、银行、保险、销售等具体应用上,考虑到逻辑、地理上以及系统抗破坏能力等因素,不得不采用分布式数据库技术。

  简言之,分布式数据库系统是物理学上分散而逻辑上集中的数据库系统。分布式数据库系统使用计算机网络将地理位置分散而管理和控制又需要不同程度集中的多个逻辑单位连接起来,共同组成一个统一大业的数据库系统。因此,分布式数据库系统可以看成是计算机网络与数据库系统的有机结合。

搜索