本发明属于计算机,尤其是涉及一种分布式数据库分布键的优选方法。
背景技术:
1、在分布式数据库中,当两张表做关联查询时,只要其中一张表的关联字段不是分布字段,就会引发数据库的重分布操作,节点之间需要搬运数据,使之满足关联条件,这就是数据的重分布,简称“重分布”。
2、重分布会导致节点之间的网络负荷增加,并降低系统的整体效率。虽然重分布本身很难避免,但可以尽量减少:通过给每张数据表设置合理的分布键,使关联查询尽可能在节点内完成,减少重分布操作,就可以大幅度改善系统效率。
3、现有技术中,给每张表选择合适的分布键,由资深dba人工完成,dba需要查看所有数据表的定义,并分析应用系统的所有sql,据此为每张表选择合适的分布键,这个过程,由于很难精确衡量每一种分布键设置带来的影响,当数据表的数量达到几千上万,甚至更多时,人工选择的弊端越发明显,选择的分布键也通常不是最优设置,只能是局部较优,导致系统性能低下。
4、如果通过计算机穷举每张表所有可能的分布键设置,再计算每种分布键设置下的系统性能,由于计算量太大,不具有实用性(考虑1000张表,每张表10个字段,则所有可能的分布键设置数量为10^1000),这就是分布式数据库目前只有人工选择分布键这一种手段的原因。
技术实现思路
1、有鉴于此,本发明旨在提出一种分布式数据库分布键的优选方法,以期解决分布式数据库中选择分布键的难点,通过自动化的方式,选出最优分布键,提高分布键选择效率,避免人工选择的缺陷,减少节点之间的重分布操作,提升系统整体效率。
2、为达到上述目的,本发明的技术方案是这样实现的:
3、本发明第一方面提供了一种分布式数据库分布键的优选方法,包括:
4、收集分布式数据库在运行期间执行的sql语句和每条sql的运行信息;
5、记录分布式数据库中每张表的重分布代价以及非重分布代价,并记录与每张表相关联的候选键;
6、根据收集的运行信息,对每条sql的运行信息进行处理,计算出每张表中每个相关联的候选键的代价;
7、对所有代价进行汇总,得出运行期间每张表各个候选键的总代价;
8、选择每张表总代价最高的候选键作为最优分布键,并将最优分布键应用到分布式数据库中。
9、进一步的,收集分布式数据库在运行期间每条sql的运行信息的过程包括:
10、在分布式数据库中修改优化器,根据分布式数据库的统计信息生成对sql的运行信息的估计值;
11、在分布式数据库中修改执行器,根据sql的执行过程统计sql的运行信息。
12、进一步的,在分布式数据库中修改分布式数据库的优化器或执行器,收集sql的运行信息的过程包括:
13、将运行信息的收集过程中涉及sql查询的关联条件字段,作为分布列的候选键;
14、在收集过程中,保存收集的运行信息,在收集结束后进行汇总统计。
15、进一步的,选择每张表总代价最高的候选键作为最优分布键的过程中,若非重分布代价最大,则不更改表的分布键;
16、若重分布代价最大,则将表的最优分布键更改为对应的候选键。
17、进一步的,当收集到满足计算每张表的代价的sql运行信息后,调用停止函数停止数据收集,在停止函数中遍历收集到的信息,开始计算每张表的代价。
18、进一步的,计算出每张表中每个相关联的候选键的代价并选出最优分布键的过程包括:
19、计算非重分布代价htm,对于每张表tm,计算所有sql查询中当前表的非重分布代价之和,其公式为:;
20、计算重分布代价htm-fn,对于表tm中的每个候选键fn,计算所有sql查询中的重分布代价之和,其公式为:;
21、选择最优分布键,对于每张表tm,比较非重分布代价和所有候选键的重分布代价,并找出集合{htm,htm-f1,htm-f2,…,htm-fn}中的最大值;
22、若最大值为htm,则当前的分布键是最优的;
23、若最大值为htm-fn,则将最优分布键更换为fn。
24、本发明第二方面提供了一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于:所述处理器用于执行上述第一方面任一所述的一种分布式数据库分布键的优选方法。
25、本发明第三方面提供了一种服务器,其特征在于:包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如第一方面任一所述的一种分布式数据库分布键的优选方法。
26、本发明第四方面提供了一种计算机可读取存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现第一方面任一项所述的一种分布式数据库分布键的优选方法。
27、相对于现有技术,本发明所述的一种分布式数据库分布键的优选方法具有以下有益效果:
28、本发明通过自动推荐分布键,无需人工干预的方式,解决了传统上依赖人工选择分布键的诸多弊端,解放了人力,在收集运行信息之后,能够迅速选出最优分布键,大幅度提升了执行效率。
29、本发明通过重分布代价与非重分布代价对比校验,实现了选择的分布键是最优分布键,能够大幅提升分布式数据库的性能,解决了分布键不合理导致的性能问题。
1.一种分布式数据库分布键的优选方法,其特征在于,包括:
2.根据权利要求1所述的一种分布式数据库分布键的优选方法,其特征在于:
3.根据权利要求2所述的一种分布式数据库分布键的优选方法,其特征在于:
4.根据权利要求1所述的一种分布式数据库分布键的优选方法,其特征在于:
5.根据权利要求1所述的一种分布式数据库分布键的优选方法,其特征在于:
6.根据权利要求1所述的一种分布式数据库分布键的优选方法,其特征在于:
7.一种电子设备,包括处理器以及与处理器通信连接,且用于存储所述处理器可执行指令的存储器,其特征在于:所述处理器用于执行上述权利要求1-6任一所述的一种分布式数据库分布键的优选方法。
8.一种服务器,其特征在于:包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如权利要求1-6任一所述的一种分布式数据库分布键的优选方法。
9.一种计算机可读取存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1-6任一项所述的一种分布式数据库分布键的优选方法。