一种数据插入方法、装置、设备和储存介质制造方法及图纸

技术编号:22363988 阅读:32 留言:0更新日期:2019-10-23 04:39
本发明专利技术实施例公开了一种数据插入方法、装置、设备和储存介质,该方法包括:根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;根据所述分区分桶信息,将待插入数据分为至少一组;根据所述分区分桶信息,对组内的所述待插入数据进行排序;按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。本发明专利技术实施例的技术方案,在保证系统稳定的情况下,提高动态分区插入的性能。

A data insertion method, device, equipment and storage medium

【技术实现步骤摘要】
一种数据插入方法、装置、设备和储存介质
本专利技术实施例涉及数据存储技术,尤其涉及一种数据插入方法、装置、设备和储存介质。
技术介绍
随着应用场景的复杂化,数据经常在不同数据库之间流转。而随着大数据时代的到了,数据库之间导入或导出的数据量也越来越大。分区是数据库中常用的数据组织方式,现有方法大都采用单个分区逐个插入的方式,在处理大批量数据时性能无法满足要求。如果要同时插入不同分区,则会因为长时间同时操作不同分区的太多文件,导致系统不稳定,例如内存使用过多、打开的文件句柄数量多大等问题。
技术实现思路
本专利技术实施例提供一种数据插入方法、装置、设备和储存介质,以实现在保证系统稳定的情况下,提高动态分区插入的性能。第一方面,本专利技术实施例提供了一种数据插入方法,包括:根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;根据所述分区分桶信息,将待插入数据分为至少一组;根据所述分区分桶信息,对组内的所述待插入数据进行排序;按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。第二方面,本专利技术实施例还提供了一种数据插入装置,包括:插入动作类型确定模块,用于根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;分区分桶信息确定模块,用于当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;数据分组模块,用于根据所述分区分桶信息,将待插入数据分为至少一组;数据排序模块,用于根据所述分区分桶信息,对组内的所述待插入数据进行排序;数据插入模块,用于按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。第三方面,本专利技术实施例还提供了一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本专利技术任意实施例所提供的数据插入方法。第四方面,本专利技术实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本专利技术任意实施例所提供的数据插入方法。本专利技术实施例通过对待插入数据分组排序,逐个插入目标表,同时只打开一个文件,解决长时间同时操作不同分区的大量文件,导致系统不稳定的问题,实现在保证系统稳定的情况下,提高动态分区插入的性能的效果。附图说明图1是本专利技术实施例一中的一种数据插入方法的流程图;图2是本专利技术实施例二中的一种数据插入方法的流程图;图3是本专利技术实施例三中的一种数据插入方法的流程图;图4是本专利技术实施例四中的一种数据插入方法的流程图;图5是本专利技术实施例五中的一种数据插入方法的流程图;图6是本专利技术实施例六中的一种数据插入装置的结构示意图;图7是本专利技术实施例七中的一种设备的结构示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。实施例一图1为本专利技术实施例一提供的一种数据插入方法的流程图,本实施例可适用于向数据库导入数据的情况,该方法可以由数据插入装置来执行,该装置可以由硬件和/或软件来实现,具体包括如下步骤:步骤110、根据获取到的数据插入命令,确定数据插入命令的插入动作类型。其中,当需要执行数据插入任务时,会执行相应的插入命令,根据数据库引擎的数据插入命令可以确定是动态分区插入还是静态分区插入。静态分区插入是指插入数据的时候指定目标分区,一次只能插入到一个分区;动态分区插入是指插入数据的时候不指定目标分区,而是根据分区列动态的判断数据的目标分区,一次可以插入到多个分区。步骤120、当插入动作类型为动态分区插入时,根据目标表的元信息,确定目标表的分区分桶信息。其中,如果是动态分区插入,则获取目标表的元信息,确定目标表的分区分桶信息。例如,根据sql语句的插入命令,判断是否为动态分区插入,在确定为动态分区插入,进而获取目标表的元信息,确定目标表是分区非分桶表,还是分区分桶表,以及分区列、分桶列等信息。步骤130、根据分区分桶信息,将待插入数据分为至少一组。其中,如果目标表是分桶表,对待插入数据分组时,保证同一个分桶文件的数据在同一组中,如果目标表不是分桶表,理论上对待插入数据任意分组不会对动态分区插入造成影响。为了单个分组中待插入数据的数量不会过大,造成组内需要排序的数据过多,可以将待插入数据进行分组,避免单个分组中待插入数据的数量过大,一般可以将待插入数据进行均匀分组。可选的,当目标表为分区非分桶表,按照第一分组规则将待插入数据分为至少一组。示例的,按照第一分组规则将待插入数据分为至少一组,包括:获取预设分组数;确定每一条待插入数据的分组标识数;其中,分组标识数包括待插入数据的预设字段的hash值或待插入数据对应的随机数;根据分组号和分组标识数对组数取模的结果,将待插入数据分配到对应的数组。也就是,先确定将要把待插入数据分为多少组,然后对每一条待插入数据的选定字段求hash值,或者对每一条待插入数据生成一个随机数,将得到的hash值或随机数作为该条待插入数据的分组标识数,根据分组标识数对预设分组数取模,将取模的结果与分组号进行匹配,从而将待插入数据分配到对应的数组中。例如,预设分组数是7(组号是0-6),某个待插入数据选定字段的hash值是123878437872,对7取模是0,所以将该待插入数据分配到组号为0的组。还可以根据待插入数据的数量和预设单组数据量,将待插入数据分为至少一组;其中,每个组中的待插入数据的数量小于等于预设单组数据量。如果待插入数据的数量小于等于预设单组数据量,则只分一组即可;如果待插入数据的数量大于预设单组数据量,则分为多组,每组中的待插入数据的数量均小于等于预设单组数据量,其中,可以等比例分组,也可以不等比例分组,在此不做限定。步骤140、根据分区分桶信息,对组内的待插入数据进行排序。其中,在分组之后,将每组待插入数据根据分区列的值进行组内排序,排序是为了保证同一个分区的数据连续排列。这样在以组为单位进行执行插入时,对应同一个目标表分区的待插入数据是相邻的,且连续排列,在对应同一个目标表分区的待插入数据插入目标表的分区文件之后,才会插入下一个目标表分区的待插入数据。步骤150、按照待插入数据在组内的顺序,将每组待插入数据依次动态插入对应的目标表文件。其中,按照待插入数据在组内的顺序进行插入,在对应同一个目标表分区的待插入数据插入之后,自动识别出下一个需要插入数据的目标表分区,直至组内所有的待插入数据插入完毕,对每组待插入数据都进行插入,从而完成所有待插入数据插入到目标表文件中。自动识别动态分区插入的场景,针对分区和分桶列对数据进行划分和排序,使得动态分区插入的过程中,达到像静态分区插入一样每次对一个分区插入的效果,在执行一次操作的前提下,既避免了多次分区的重复扫表,也避免了对内存或文件句柄造成巨大的压力。本实施例的技术方案,通过对待插入数据分组排序,逐个插入目标表,同时只打开一个文件,解决长时间同时操作不同分区的本文档来自技高网...

【技术保护点】
1.一种数据插入方法,其特征在于,包括:根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;根据所述分区分桶信息,将待插入数据分为至少一组;根据所述分区分桶信息,对组内的所述待插入数据进行排序;按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。

【技术特征摘要】
1.一种数据插入方法,其特征在于,包括:根据获取到的数据插入命令,确定所述数据插入命令的插入动作类型;当所述插入动作类型为动态分区插入时,根据目标表的元信息,确定所述目标表的分区分桶信息;根据所述分区分桶信息,将待插入数据分为至少一组;根据所述分区分桶信息,对组内的所述待插入数据进行排序;按照所述待插入数据在组内的顺序,将每组所述待插入数据依次动态插入对应的目标表文件。2.根据权利要求1所述的方法,其特征在于,所述根据所述分区分桶信息,将待插入数据分为至少一组,包括:当所述目标表为分区非分桶表,按照第一分组规则将所述待插入数据分为至少一组。3.根据权利要求2所述的方法,其特征在于,所述按照第一分组规则将所述待插入数据分为至少一组,包括:获取预设分组数;确定每一条所述待插入数据的分组标识数;其中,所述分组标识数包括所述待插入数据的预设字段的hash值或所述待插入数据对应的随机数;根据分组号和所述分组标识数对组数取模的结果,将所述待插入数据分配到对应的数组。4.根据权利要求1所述的方法,其特征在于,所述根据所述分区分桶信息,将待插入数据分为至少一组,包括:当所述目标表为分区分桶表,将所述待插入数据根据分桶列对应列的hash值分组。5.根据权利要求1所述的方法,其特征在于,所述根据所述分区分桶信息,对组内的所述待插入数据进行排序,包括:当所述目标表的为多级分区表,按照所述目标表分区的顺序,对组内的所述待插入数据进行排序。6.根据权利要求1所述的方法,其特征在于,所述根据所述分区分桶信息,对组内的所述待插入数据进行排序,包括:当所述目标表的为多级范围分区表,按照所述目标表分区字段映射到分区之后的顺序,对...

【专利技术属性】
技术研发人员:张泓毅陈振强
申请(专利权)人:星环信息科技上海有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1