一种MPP数据库数据动态重分布的方法及装置与流程

文档序号:12121930阅读:826来源:国知局
一种MPP数据库数据动态重分布的方法及装置与流程

本发明属于数据库技术领域,尤其是涉及一种MPP数据库数据动态重分布的方法及装置。



背景技术:

分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。近年来,随着数据量的高速增长,分布式数据库技术也得到了快速的发展,传统的关系型数据库开始从集中式模型向分布式架构发展,基于关系型的分布式数据库在保留了传统数据库的数据模型和基本特征下,从集中式存储走向分布式存储,从集中式计算走向分布式计算。

分布式数据库集群中,为了获得更大的存储容量和更高的并发访问量,通常会将数据分散到各个节点存储,分布方式一般是按照特定的字段进行hash分布建表,当涉及hash键的关联、分组等操作时,只需在本地进行,相当于获得了数倍于单个节点的计算能力。但是当一些sql操作涉及到非hash字段时,如非hash键关联、非hash键group by等操作,会对原表数据或中间结果进行动态重分布,即把一个节点上的数据按一定的规则(如按关联字段hash分布)分发到其他节点,这样就能正确的完成分布式执行计划,随之而来的是通讯开销。

随着数据库处理的数据量越来越大,数据库集群的节点数越来越多,同时数据库支持的业务逻辑也越来越复杂,导致动态重分布的频率和需要处理的数据量都快速增加,大量增加了各节点的网络带宽,增加了通讯开销;同时由于动态重分布过程是各节点间交叉连接,当节点数很多时,每条sql都会在同一节点创建大量的连接,在并行情况下,连接数会更多,资源耗费的情况非常严重。



技术实现要素:

本发明提供了一种MPP数据库数据动态重分布的方法及装置,以解决现有技术中MPP数据库动态重分布资源耗费过多的技术问题。

一方面,本发明实施例提供了一种MPP数据库数据动态重分布的方法,包括:

在每个节点划分缓存空间,所述缓存空间用于缓存重分布数据;

判断所述缓存空间是否包括动态重分布需求对应的数据,在所述缓存空间包括动态重分布需求对应的数据时,使用所述缓存空间中的所述数据。

进一步的,所述方法还包括:

在所述缓存空间不包括动态重分布需求对应的数据时,重新构建动态分布拉表。

进一步的,所述方法还包括:

根据使用概率确定所述重分布数据的权重;

在所述重分布数据大于所述缓存空间时,按照所述权重删除重分布数据。

更进一步的,所述在每个节点划分缓存空间,包括:

根据重分布数据的表名和\或库名对所述数据进行标识,并记录所述数据占用空间的大小。

另一方面,本发明实施例还提供了一种MPP数据库数据动态重分布的装置,包括:

划分单元,用于在每个节点划分缓存空间,所述缓存空间用于缓存重分布数据;

判断单元,用于判断所述缓存空间是否包括动态重分布需求对应的数据,在所述缓存空间包括动态重分布需求对应的数据时,使用所述缓存空间中的所述数据。

进一步的,所述装置还包括:

构建单元,用于在所述缓存空间不包括动态重分布需求对应的数据时,重新构建动态分布拉表。

进一步的,所述装置还包括:

权重确定单元,用于根据使用概率确定所述重分布数据的权重;

删除单元,用于在所述重分布数据大于所述缓存空间时,按照所述权重删除重分布数据。

更进一步的,所述划分单元用于:

根据重分布数据的表名和\或库名对所述数据进行标识,并记录所述数据占用空间的大小。

本发明实施例提供的MPP数据库数据动态重分布的方法及装置,通过在本地设置缓存,并在重分布时优先使用缓存中的数据。减少MPP数据库集群节点间的通讯,提升本地化运算比例,从而提升集群整体性能。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的MPP数据库数据动态重分布的方法的流程示意图;

图2是本发明实施例一提供的MPP数据库数据动态重分布的方法中动态重分布示意图;

图3是本发明实施例二提供的MPP数据库数据动态重分布的方法的流程示意图;

图4是本发明实施例三提供的MPP数据库数据动态重分布的装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

图1为本发明实施例一提供的MPP数据库数据动态重分布的方法的流程图,本实施例可适用于对MPP数据库数据动态重分布的情况,该方法可以由MPP数据库数据动态重分布的装置来执行,该装置可由软件/硬件方式实现,并可集成于MPP数据库系统节点中。

参见图1,所述的MPP数据库数据动态重分布的方法,包括:

S110,在每个节点划分缓存空间,所述缓存空间用于缓存重分布数据。

大规模MPP数据库集群处理的业务通常是不断执行的类似的sql,实际上是做重复的工作,需要处理的数据也基本相同,但每次都需要将数据重新动态重分布一次。示例性的,在各节点上设定一定大小的物理空间,将动态重分布的数据缓存到这块空间上。示例性的,可以设定一块可配的物理空间大小,动态重分布的同时将数据缓存到本地磁盘,并根据表名、库名等信息进行特殊标识

S120,判断所述缓存空间是否包括动态重分布需求对应的数据,在所述缓存空间包括动态重分布需求对应的数据时,使用所述缓存空间中的所述数据。

图2是本发明实施例一提供的MPP数据库数据动态重分布的方法中动态重分布示意图,参见图2,示例性的,执行如下sql语句:

sql:select*from t1,t2where t1.no_hash_col=t2.no_hash_col;在有动态重分布的需求时,去缓冲区查看是否有需要的数据,如果有,则直接使用缓冲区里面的数据。

本实施例通过在本地设置缓存,并在重分布时优先使用缓存中的数据。减少MPP数据库集群节点间的通讯,提升本地化运算比例,从而提升集群整体性能。

在本实施例的一个优选实施方式中,所述方法还包括:在所述缓存空间不包括动态重分布需求对应的数据时,重新构建动态分布拉表。示例性的,执行sql语句:select*from t2,t3where t2.no_hash_col=t3.no_hash_col;,因为t2的no_hash_col有缓存,因此直接使用缓存结果,不需要动态重分布操作;而t2的no_hash_col没有缓存,需要做动态重分布操作。

实施例二

图3是本发明实施例二提供的MPP数据库数据动态重分布的方法的流程示意图,本发明实施例以上述实施例为基础,进一步的,增加如下步骤:根据使用概率确定所述重分布数据的权重;在所述重分布数据大于所述缓存空间时,按照所述权重删除重分布数据。

参见图3,所述MPP数据库数据动态重分布的方法,包括:

S210,在每个节点划分缓存空间,所述缓存空间用于缓存重分布数据。

S220,根据使用概率确定所述重分布数据的权重。

示例性的,可以根据数据特点计算一个权值,同时将占用的空间大小记录下来。或者也可按照一定的算法,根据统计信息,将使用概率比较低的缓存数据设定较低的权值。用户也可以手动控制提高某些数据的缓存优先级,降低某些数据的缓存优先级,已达到更好的优化效果。

S230,在所述重分布数据大于所述缓存空间时,按照所述权重删除重分布数据。

当缓存空间不足时,根据权值去做缓存数据的换入换出,优先换出权值低的缓存数据;同时设置命令可以手动缓冲指定中间结果,手动删除指定中间结果。

S240,判断所述缓存空间是否包括动态重分布需求对应的数据,在所述缓存空间包括动态重分布需求对应的数据时,使用所述缓存空间中的所述数据。

本实施例通过增加如下步骤:根据使用概率确定所述重分布数据的权重;在所述重分布数据大于所述缓存空间时,按照所述权重删除重分布数据。可以在数据量超过空间大小时,将使用概率比较低的缓存数据清除;可以动态的调整缓存数据,以提高动态重分布数据的命中率。

实施例三

图4是本发明实施例三提供的MPP数据库数据动态重分布的装置的结构示意图,参见图4,所述装置包括:

划分单元310,用于在每个节点划分缓存空间,所述缓存空间用于缓存重分布数据;

判断单元320,用于判断所述缓存空间是否包括动态重分布需求对应的数据,在所述缓存空间包括动态重分布需求对应的数据时,使用所述缓存空间中的所述数据。

本实施例提供的MPP数据库数据动态重分布的装置,通过在本地设置缓存,并在重分布时优先使用缓存中的数据。减少MPP数据库集群节点间的通讯,提升本地化运算比例,从而提升集群整体性能。

进一步的,所述装置还包括:

构建单元,用于在所述缓存空间不包括动态重分布需求对应的数据时,重新构建动态分布拉表。

进一步的,所述装置还包括:

权重确定单元,用于根据使用概率确定所述重分布数据的权重;

删除单元,用于在所述重分布数据大于所述缓存空间时,按照所述权重删除重分布数据。

更进一步的,所述划分单元用于:

根据重分布数据的表名和\或库名对所述数据进行标识,并记录所述数据占用空间的大小。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1