System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据库,更具体的说,涉及一种分布式数据库查询的优化方法、装置及存储介质。
技术介绍
1、一般面向大数据的分布式关系型数据库,逻辑上可分为两层:计算引擎层和存储引擎层。其中,计算引擎层负责结构化查询语言(structured query language,sql)语句解析、分布式执行计划生成、优化和执行,存储引擎层负责数据的存储和读取。
2、目前,计算引擎是按照自己的哈希算法,对查询语句中涉及到参与连接的两张表的数据,同时按连接键做哈希,然后根据哈希分布规则,将数据重分布到对应的节点,在对应的节点完成哈希连接,生成结果集。但是,数据重分布的过程会产生大量的网络流量,增加查询的响应时间。
技术实现思路
1、有鉴于此,本申请实施例公开一种分布式数据库查询的优化方法、装置及存储介质,消除不必要的数据重分布过程,降低网络负载,减少查询的响应时间。
2、本申请实施例提供的技术方案如下:
3、第一方面,本申请实施例提供了一种分布式数据库查询的优化方法,所述方法包括:
4、从存储引擎中获取第一数据表的第一分片键和第二数据表的第二分片键;
5、当确定所述第一分片键与查询语句的连接键匹配,从所述存储引擎中获取所述第一数据表的第一分片和节点映射关系;
6、利用所述第一分片和节点映射关系对所述第一数据表进行表扫描,得到第一扫描结果;
7、当确定所述第一数据表和所述第二数据表满足相容条件,从所述存储引擎中获取所述第
8、利用所述第二分片和节点映射关系对所述第二数据表进行表扫描,得到第二扫描结果;
9、利用所述第一分片映射函数、所述第一扫描结果和所述第二扫描结果,在对应的物理节点上对所述第一数据表和所述第二数据表进行分片连接。
10、在一种可能的实现方式中,所述方法还包括:
11、当确定所述第一数据表和所述第二数据表不满足所述相容条件,获取所述第一分片映射函数;
12、对所述第二数据表进行表扫描,得到第三扫描结果;
13、利用所述第一分片映射函数、所述第一分片和节点映射关系和所述第三扫描结果对所述第二数据表进行数据重分布,得到重分布结果;
14、利用所述第一分片映射函数、所述第一扫描结果和所述重分布结果,在对应的物理节点上对所述第一数据表和所述第二数据表进行分片连接。
15、在一种可能的实现方式中,所述当确定所述第一分片键与查询语句的连接键匹配,从所述存储引擎中获取所述第一数据表的第一分片和节点映射关系,包括:
16、当确定所述第一分片键、所述第二分片键与查询语句的连接键均匹配,且所述第一数据表的逻辑分片数多于所述第二数据表的逻辑分片数,从所述存储引擎中获取所述第一数据表的第一分片和节点映射关系。
17、在一种可能的实现方式中,所述利用所述第一分片映射函数、所述第一扫描结果和所述第二扫描结果,在对应的物理节点上对所述第一数据表和所述第二数据表进行分片连接之前,所述方法还包括:
18、确定所述第一数据表为分片连接的左表,所述第二数据表为分片连接的右表。
19、在一种可能的实现方式中,所述第一扫描结果包括n个第一子扫描结果,一个所述第一子扫描结果对应一个所述第一数据表的逻辑分片,所述n为大于等于2的正整数;
20、所述第二扫描结果包括m个第二子扫描结果,一个所述第二子扫描结果对应一个所述第二数据表的逻辑分片,所述m为大于等于2的正整数。
21、在一种可能的实现方式中,所述n大于所述m,所述方法还包括:
22、利用所述第一分片映射函数对所述第二扫描结果进行拆分,得到第四扫描结果;所述第四扫描结果包括n个第四子扫描结果;
23、所述利用所述第一分片映射函数、所述第一扫描结果和所述第二扫描结果,在对应的物理节点上对所述第一数据表和所述第二数据表进行分片连接,包括:
24、利用所述第一分片映射函数、所述第一扫描结果和所述第四扫描结果,在对应的物理节点上对所述第一数据表和所述第二数据表进行分片连接。
25、第二方面,本申请实施例提供了一种分布式数据库查询的优化装置,所述装置包括:
26、获取模块,用于从存储引擎中获取第一数据表的第一分片键和第二数据表的第二分片键;
27、所述获取模块,还用于当确定所述第一分片键与查询语句的连接键匹配,从所述存储引擎中获取所述第一数据表的第一分片和节点映射关系;
28、表扫描模块,用于利用所述第一分片和节点映射关系对所述第一数据表进行表扫描,得到第一扫描结果;
29、所述获取模块,还用于当确定所述第一数据表和所述第二数据表满足相容条件,从所述存储引擎中获取所述第二数据表的第二分片和节点映射关系;所述相容条件包括:所述第一分片键与所述第二分片键相同,且所述第一数据表的第一分片映射函数与所述第二数据表的第二分片映射函数一致,且所述第一数据表的逻辑分片数与所述第二数据表的逻辑分片数是整数倍关系,且所述第一分片和节点映射关系与所述第二分片和节点映射关系一致;
30、所述表扫描模块,还用于利用所述第二分片和节点映射关系对所述第二数据表进行表扫描,得到第二扫描结果;
31、连接模块,用于利用所述第一分片映射函数、所述第一扫描结果和所述第二扫描结果,在对应的物理节点上对所述第一数据表和所述第二数据表进行分片连接。
32、在一种可能的实现方式中,所述装置还包括:数据重分布模块;
33、所述获取模块,还用于当确定所述第一数据表和所述第二数据表不满足所述相容条件,获取所述第一分片映射函数;
34、所述表扫描模块,还用于所述对所述第二数据表进行表扫描,得到第三扫描结果;
35、所述数据重分布模块,用于利用所述第一分片映射函数、所述第一分片和节点映射关系、所述第三扫描结果对所述第二数据表进行数据重分布,得到重分布结果;
36、所述连接模块,还用于利用所述第一分片映射函数、所述第一扫描结果和所述重分布结果,在对应的物理节点上对所述第一数据表和所述第二数据表进行分片连接。
37、第三方面,本申请实施例提供了一种分布式数据库查询的优化装置,包括:
38、存储器,用于存储指令;
39、处理器,用于执行所述存储器中的所述指令以执行以上第一方面任一项所述的分布式数据库查询的优化方法。
40、第四方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执本文档来自技高网...
【技术保护点】
1.一种分布式数据库查询的优化方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述当确定所述第一分片键与查询语句的连接键匹配,从所述存储引擎中获取所述第一数据表的第一分片和节点映射关系,包括:
4.根据权利要求3所述的方法,其特征在于,所述利用所述第一分片映射函数、所述第一扫描结果和所述第二扫描结果,在对应的物理节点上对所述第一数据表和所述第二数据表进行分片连接之前,所述方法还包括:
5.根据权利要求1所述的方法,其特征在于,所述第一扫描结果包括N个第一子扫描结果,一个所述第一子扫描结果对应一个所述第一数据表的逻辑分片,所述N为大于等于2的正整数;
6.根据权利要求5所述的方法,其特征在于,所述N大于所述M,所述方法还包括:
7.一种分布式数据库查询的优化装置,其特征在于,所述装置包括:
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:数据重分布模块;
9.一种分布式数据库查询的优化装置,
10.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行权利要求1至6任意一项所述的分布式数据库查询的优化方法。
...【技术特征摘要】
1.一种分布式数据库查询的优化方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述当确定所述第一分片键与查询语句的连接键匹配,从所述存储引擎中获取所述第一数据表的第一分片和节点映射关系,包括:
4.根据权利要求3所述的方法,其特征在于,所述利用所述第一分片映射函数、所述第一扫描结果和所述第二扫描结果,在对应的物理节点上对所述第一数据表和所述第二数据表进行分片连接之前,所述方法还包括:
5.根据权利要求1所述的方法,其特征在于,所述第一扫描结...
【专利技术属性】
技术研发人员:吕亚宁,
申请(专利权)人:湖南亚信安慧科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。