System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及分布式数据库,具体涉及一种分布式数据库中分布键的确定方法、装置及电子设备。
技术介绍
1、分布式数据库中,数据库表的分布键设置尤为关键,如果设置不好,会导致业务语句执行时数据节点之间频繁交换数据,导致系统网络负荷增加,同时数据库性能下降。其中,业务语句可以理解以结构化查询语言(structured query language,sql)编写的业务sql。
2、目前,从每张数据库表中确定最优分布键的方案都是依赖数据库实现的。例如,首先搭建数据库集群,然后将待分析的业务sql输入给数据库执行,单个业务sql执行结束后执行下一个业务sql,直到所有业务执行完毕。在执行每个业务sql时,通过插件方式将业务sql的分析操作注入到sql执行过程,由此,每个业务sql执行完毕后,也同步完成了分布键信息的收集。执行并收集所有业务sql后,对收集的分布键信息进行计算,得出最优分布键。
3、然而,上述分布键确定方案存在部署繁琐、操作复杂、效率低的问题。一方面,该方案需要部署一套数据库系统,这增大了信息收集的前置工作难度。另一方面,由于数据库系统本身有自己的内在处理逻辑,因此,对于执行的业务sql需要是全套完整的sql,包括数据库表的建表sql、查询sql、更新sql等。例如,对一张数据库表进行查询时,该表首先必须存在,也即需要先执行建表sql,否则查询就会报错,进而导致分布键分析无法进行。对于分布键分析的过程,全套sql中的查询sql是有意义的,通过统计查询sql中表连接字段的出现次数和位置,可以知道哪个字段作
4、此外,由于上述分布键确定方案中的每个业务sql的分析都依赖于数据库环境,因此,每个业务sql分析都需要经过解析器、语义分析、重写、分布键分析、优化器、执行器等模块。然而,优化器和执行器工作对于信息收集阶段而言不是必须的,这两步也是最耗时的,占到了整个sql处理的大部分时间,进而导致了单个sql的处理效率不高。
5、综上,目前的分布键确定方案对数据库环境具有较强的依赖关系,且存在部署繁琐、操作复杂、效率低的问题。
技术实现思路
1、鉴于上述问题,本专利技术提供了一种分布式数据库中分布键的确定方法。
2、根据本专利技术的第一个方面,提供了一种分布式数据库中分布键的确定方法,包括:从开发分布式数据库时编写的编码文件中解析出多个初始结构化查询语句;在不执行多个初始结构化查询语句的情况下,从多个初始结构化查询语句中筛选出属于预设语句类型的多个结构化查询语句;根据每个结构化查询语句的查询树,确定与每个结构化查询语句相关的多个候选键各自的重分布代价,其中,结构化查询语句包括至少一个数据库表,每个数据库表包括至少一个候选键;重分布代价至少是基于候选键在结构化查询语句中的出现次数确定的;将多个结构化查询语句中相同数据库表的相同候选键的重分布代价进行汇总,得到每个数据库表中每个候选键的重分布总代价;以及将每个数据库表中重分布总代价最高的候选键作为数据库表的分布键。
3、根据本专利技术的实施例,根据与每个结构化查询语句的查询树,确定与每个结构化查询语句相关的多个候选键各自的重分布代价,包括:针对每个结构化查询语句,将每个候选键在查询树中的出现次数,作为每个候选键的重分布代价;或者针对每个结构化查询语句,根据每个候选键在查询树中的位置和出现次数,确定每个候选键的重分布代价。
4、根据本专利技术的实施例,根据每个候选键在查询树中的位置和出现次数,确定每个候选键的重分布代价,包括:根据每个候选键在查询树中的位置,确定与位置对应的位置权重;以及根据位置权重和出现次数,确定每个候选键的重分布代价。
5、根据本专利技术的实施例,该方法还包括:针对每个结构化查询语句,将每个数据库表中每个候选键的重分布代价缓存至哈希表;其中,哈希表包括多个缓存记录,每个缓存记录与一个数据库表中的一个候选键相关,缓存记录的缓存结构包括命名空间、数据库表名、候选键的属性名和重分布代价。
6、根据本专利技术的实施例,将多个结构化查询语句中相同数据库表的相同候选键的重分布代价进行汇总,得到每个数据库表中每个候选键的重分布总代价,包括:遍历哈希表,将多个结构化查询语句中相同数据库表的相同候选键的重分布代价进行汇总,得到每个数据库表中每个候选键的重分布总代价。
7、根据本专利技术的实施例,初始结构化查询语句的语句类型包括操作类型和定义类型;在不执行多个初始结构化查询语句的情况下,从多个初始结构化查询语句中,确定预设语句类型的多个结构化查询语句,包括:在不执行多个初始结构化查询语句的情况下,从多个初始结构化查询语句中筛选出操作类型的初始结构化语句,并将操作类型的初始结构化语句确定为结构化查询语句。
8、根据本专利技术的实施例,该方法还包括:通过解析器、语义分析、重写操作,生成多个结构化查询语句中每个结构化查询语句的查询树;通过解析器、语义分析、重写操作生成多个结构化查询语句中每个结构化查询语句的查询树,包括:通过解析器对结构化查询语句进行解析,得到语法树;对语法树进行语义分析并通过重写操作生成查询树。
9、本专利技术的第二方面提供了一种分布式数据库中分布键的确定装置,其特征在于,装置包括:读取模块,用于从开发分布式数据库时编写的编码文件中解析出多个初始结构化查询语句;确定模块,用于在不执行多个初始结构化查询语句的情况下,从多个初始结构化查询语句中筛选出属于预设语句类型的多个结构化查询语句;代价计算模块,用于根据每个结构化查询语句的查询树,确定与每个结构化查询语句相关的多个候选键各自的重分布代价,其中,结构化查询语句包括至少一个数据库表,每个数据库表包括至少一个候选键,重分布代价至少是基于候选键在结构化查询语句中的出现次数确定的;汇总模块,用于将多个结构化查询语句中相同数据库表的相同候选键的重分布代价进行汇总,得到每个数据库表中每个候选键的重分布总代价;以及分布键确定模块,用于利用将每个数据库表中重分布总代价最高的候选键作为数据库表的分布键。
10、本专利技术的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个计算机程序,当一个或多个处理器执行一个或多个计算机程序时以实现根据上述分布式数据库中分布键的确定方法的步骤。
11、本专利技术的第四方面还提供了一种计算机可读存储介质,其上存储有计算机程序或指令,计算机程序或指令被处理器执行时实现根据上述分布式数据库中分布键的确定方法的步骤。
12、本专利技术的第五方面还提供了一种计算机程序产品,包括计算机程序或指令,计算机程序或指令被处理器执行时实现根据上述分布式数据库中分布键的确定方法的步骤。
13、本专利技术的分布式数据库中分布键的确定方法的技术效果体现在本文档来自技高网...
【技术保护点】
1.一种分布式数据库中分布键的确定方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据每个所述结构化查询语句的查询树,确定与每个所述结构化查询语句相关的多个候选键各自的重分布代价,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据每个所述候选键在所述查询树中的位置和所述出现次数,确定每个所述候选键的重分布代价,包括:
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述将多个所述结构化查询语句中相同数据库表的相同候选键的重分布代价进行汇总,得到每个所述数据库表中每个所述候选键的重分布总代价,包括:
6.根据权利要求1所述的方法,其特征在于,所述初始结构化查询语句的语句类型包括操作类型和定义类型;
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
8.一种分布式数据库中分布键的确定装置,其特征在于,所述装置包括:
9.一种电子设备,包括:
10.一种计算机可读存储介质,其上
...【技术特征摘要】
1.一种分布式数据库中分布键的确定方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据每个所述结构化查询语句的查询树,确定与每个所述结构化查询语句相关的多个候选键各自的重分布代价,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据每个所述候选键在所述查询树中的位置和所述出现次数,确定每个所述候选键的重分布代价,包括:
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述将多个所述结构化查询语句中相同数据库表的相...
【专利技术属性】
技术研发人员:张益,李龙,
申请(专利权)人:苏州吉呗思数据技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。