本申请涉及数据库,尤其涉及一种分布式数据库直方图创建方法、装置、设备及存储介质。
背景技术:
1、直方图(histogram)是数据库中的一种重要的统计信息,可以描述列中的数据分布情况,直方图可以很好的指导优化器选择执行路径。利用直方图存储了指定列的数据分布。直方图最典型的应用场景是通过估算查询谓词的选择率,来帮助优化器选择最优的执行计划。
2、在一个列上没有索引又没有直方图的情况下,数据库会默认整个表中的数据是均匀分布的,然后对where条件进行检索,这样执行计划很大可能是不准的,他的估算非常粗糙,忽略了数据分布,而直方图可以更准确的反应数据分布,直方图的精度可以用用户决定,可以在数据库生成查询计划的时候提供帮助。查询计划中列的filter值,在没有索引的情况下,会从直方图中读取相应信息,从而更准确的估算出需要的行数。
3、分布式数据库将大数据量的单表分割成多张小数据量的表分布在多个数据节点上,同时引入cn层(computernode)负责处理分布规则以及复杂sql语句。由于每张表的位置分布方式原因,sql语句执行逻辑不同于传统数据库,直方图逻辑也发生了变化,为了贴合实际需求,我们需要一种支持分布式数据库的直方图构建方法。
技术实现思路
1、本申请提供了一种分布式数据库直方图创建方法、装置、设备及存储介质,解决了分布式数据库中由于每张表的位置分布方式原因,sql语句执行逻辑不同于传统数据库,直方图逻辑也发生了变化,当前数据库直方图创建无法满足实际需求的技术问题。
2、有鉴于此,本申请第一方面提供了一种分布式数据库直方图创建方法,所述方法包括:
3、s1、在分布式数据库中创建数据库行数表,所述数据库行数表用于记录表行数;
4、s2、在分布式数据库中创建直方图信息表,所述直方图信息表用于记录表的各个字段直方图详细信息;
5、s3、执行分析指令,使得所述分布式数据库中各个分片上的表信息、行数信息以及直方图信息更新至所述数据库行数表以及所述直方图信息表中;
6、s4、当cn层存在直方图创建需求时,调取所述数据库行数表以及所述直方图信息表中的数据信息进行直方图的创建。
7、可选地,所述步骤s3具体包括:
8、执行第一分析指令,使得所述分布式数据库中不同目标数据库的不同表的表信息、行数信息以及直方图信息更新至所述数据库行数表以及所述直方图信息表中。
9、可选地,所述步骤s3具体包括:
10、执行第二分析指令,使得所述分布式数据库中一个目标数据库的全部表的表信息、行数信息以及直方图信息更新至所述数据库行数表以及所述直方图信息表中。
11、可选地,还包括:
12、创建定时更新任务,使得按照预设时间间隔或目标时间点执行所述分析指令。
13、可选地,还包括:
14、当cn层中的一个cn节点发起分析指令时,执行所述步骤s3,;
15、由所述cn节点向管理节点发送消息,由所述管理节点广播至所述cn层中的其他cn节点,使得其他cn节点根据所述数据库行数表以及所述直方图信息表更新本地缓存。
16、本申请第二方面提供一种分布式数据库直方图创建装置,所述装置包括:
17、第一创建单元,用于在分布式数据库中创建数据库行数表,所述数据库行数表用于记录表行数;
18、第二创建单元,用于在分布式数据库中创建直方图信息表,所述直方图信息表用于记录表的各个字段直方图详细信息;
19、执行单元,用于执行分析指令,使得所述分布式数据库中各个分片上的表信息、行数信息以及直方图信息更新至所述数据库行数表以及所述直方图信息表中;
20、直方图创建单元,用于当cn层存在直方图创建需求时,调取所述数据库行数表以及所述直方图信息表中的数据信息进行直方图的创建。
21、可选地,所述执行单元具体用于:
22、执行第一分析指令,使得所述分布式数据库中不同目标数据库的不同表的表信息、行数信息以及直方图信息更新至所述数据库行数表以及所述直方图信息表中。
23、可选地,所述执行单元具体用于:
24、执行第二分析指令,使得所述分布式数据库中一个目标数据库的全部表的表信息、行数信息以及直方图信息更新至所述数据库行数表以及所述直方图信息表中。
25、本申请第三方面提供一种分布式数据库直方图创建设备,所述设备包括处理器以及存储器:
26、所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
27、所述处理器用于根据所述程序代码中的指令,执行如上述第一方面所述的分布式数据库直方图创建的方法的步骤。
28、本申请第四方面提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行上述第一方面所述的方法。
29、从以上技术方案可以看出,本申请实施例具有以下优点:
30、本申请中,提供了一种分布式数据库直方图创建方法、装置、设备及存储介质,通过在分布式数据库中创建数据库行数表以及直方图信息表,执行分析指令查询并统计分布式数据库中各个分片上的表信息、行数信息以及直方图信息,从而更新数据库行数表以及直方图信息表,在cn层加载数据库行数表以及直方图信息表,通过汇总和权重评估以创建以及展示直方图,解决了分布式数据库中由于每张表的位置分布方式原因,sql语句执行逻辑不同于传统数据库,直方图逻辑也发生了变化,当前数据库直方图创建无法满足实际需求的技术问题。
1.一种分布式数据库直方图创建方法,其特征在于,包括:
2.根据权利要求1所述的分布式数据库直方图创建方法,其特征在于,所述步骤s3具体包括:
3.根据权利要求1所述的分布式数据库直方图创建方法,其特征在于,所述步骤s3具体包括:
4.根据权利要求1所述的分布式数据库直方图创建方法,其特征在于,还包括:
5.根据权利要求1所述的分布式数据库直方图创建方法,其特征在于,还包括:
6.一种分布式数据库直方图创建装置,其特征在于,包括:
7.根据权利要求6所述的分布式数据库直方图创建装置,其特征在于,所述执行单元具体用于:
8.根据权利要求6所述的分布式数据库直方图创建装置,其特征在于,所述执行单元具体用于:
9.一种分布式数据库直方图创建设备,其特征在于,所述设备包括处理器以及存储器:
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行权利要求1-5任一项所述的分布式数据库直方图创建方法。