本公开涉及数据库,尤其涉及一种数据入库方法、装置、设备、存储介质及程序产品。
背景技术:
1、许多系统有大量的数据文件加载入库的需求,其中一种通用的文件加载方式是通过文件转成sql语句加载入库。一般是对于不同数据库有不同的处理方式,还有就是通过批量提交的方式,多行数据放入一个事务并行处理。对于不同数据库采用不同的入库方式,而且在不同数据库,批量提交条数是不同的;对于百万级、千万级的数据量加载入库速度会很慢;对于大文件如果一次读取对存在内存溢出的现象。
2、目前,数据入库的效率较低。
技术实现思路
1、本公开提供一种数据入库方法、装置、设备、存储介质及程序产品,用以解决数据入库效率较低的问题。本公开的技术方案如下:
2、本公开实施例提供一种数据入库方法,包括:
3、读取数据文件;
4、获取所述数据文件待写入的数据库对应的目标服务器的性能参数和运行参数;其中,所述运行参数包括:运行线程数和等待线程数;所述性能参数包括:cpu内核数量和数据库最大限制值;数据写入参数包括:核心线程数、批量提交条数和最大线程数;
5、根据所述cpu内核数量、所述运行线程数和所述等待线程数,确定所述核心线程数;
6、根据所述核心线程数、所述数据文件的数据量和所述数据库最大限制值,确定所述批量提交条数;
7、以及根据所述核心线程数,确定所述最大线程数;
8、根据所述数据写入参数,将所述数据文件中的数据写入所述数据库。
9、可选地,所述根据所述cpu内核数量、所述运行线程数和所述等待线程数,确定所述核心线程数,包括:
10、确定所述运行线程数和所述等待线程数的大小关系;
11、在所述运行线程数大于所述等待线程数的情况下,增加线程数,得到所述核心线程数;
12、在所述运行线程数小于等于所述等待线程数的情况下,减少线程数,得到所述核心线程数。
13、可选地,在所述运行线程数大于所述等待线程数的情况下,所述核心线程数的计算公式如下:
14、y=a/(1-k)+(b-c)/2;
15、在所述运行线程数小于等于所述等待线程数的情况下,所述核心线程数的计算公式如下:
16、y=a/(1-k)-(c-b)/2;
17、其中,a为所述cpu内核数量,k为阻塞系数,b为所述运行线程数,c为所述等待线程数,y为核心线程数。
18、可选地,所述根据所述核心线程数、所述数据文件的数据量和所述数据库最大限制值,确定所述批量提交条数,包括:
19、从所述数据文件的数据量与所述核心线程数的比值和所述数据库最大限制值之间选择出较小的值,作为所述批量提交条数。
20、本公开实施例还提供一种数据入库装置,包括:
21、读取模块,用于读取数据文件;
22、获取模块,用于获取所述数据文件待写入的数据库对应的目标服务器的性能参数和运行参数;其中,所述运行参数包括:运行线程数和等待线程数;所述性能参数包括:cpu内核数量和数据库最大限制值;数据写入参数包括:核心线程数、批量提交条数和最大线程数;
23、确定模块,用于根据所述cpu内核数量、所述运行线程数和所述等待线程数,确定所述核心线程数;根据所述核心线程数、所述数据文件的数据量和所述数据库最大限制值,确定所述批量提交条数;以及根据所述核心线程数,确定所述最大线程数;
24、写入模块,用于根据所述数据写入参数,将所述数据文件中的数据写入所述数据库。
25、可选地,所述确定模块在根据所述cpu内核数量、所述运行线程数和所述等待线程数,确定所述核心线程数时,用于:
26、确定所述运行线程数和所述等待线程数的大小关系;
27、在所述运行线程数大于所述等待线程数的情况下,增加线程数,得到所述核心线程数;
28、在所述运行线程数小于等于所述等待线程数的情况下,减少线程数,得到所述核心线程数。
29、可选地,所述确定模块在根据所述核心线程数、所述数据文件的数据量和所述数据库最大限制值,确定所述批量提交条数时,用于:
30、从所述数据文件的数据量与所述核心线程数的比值和所述数据库最大限制值之间选择出较小的值,作为所述批量提交条数。
31、本公开实施例还提供一种电子设备,包括:
32、处理器;
33、用于存储所述处理器可执行指令的存储器;
34、其中,所述处理器被配置为执行所述指令,以实现上述的方法中的各步骤。
35、本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
36、本公开实施例还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述的方法。
37、在本公开一些实施例中,读取数据文件;获取数据文件待写入的数据库对应的目标服务器的性能参数和运行参数;根据性能参数和运行参数,确定目标服务器的数据写入参数;根据数据写入参数,将数据文件中的数据写入数据库;针对不同类型的数据库,根据数据库对应的目标服务器的性能参数和运行参数,动态调整数据库入库参数,执行数据文件写入操作,提高数据入库效率。
38、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
1.一种数据入库方法,其特征在于,包括:
2.根据权利要求1所述的方法,所述根据所述cpu内核数量、所述运行线程数和所述等待线程数,确定所述核心线程数,其特征在于,包括:
3.根据权利要求2所述的方法,其特征在于,在所述运行线程数大于所述等待线程数的情况下,所述核心线程数的计算公式如下:
4.根据权利要求1所述的方法,其特征在于,所述根据所述核心线程数、所述数据文件的数据量和所述数据库最大限制值,确定所述批量提交条数,包括:
5.一种数据入库装置,其特征在于,包括:
6.根据权利要求5所述的装置,其特征在于,所述确定模块在根据所述cpu内核数量、所述运行线程数和所述等待线程数,确定所述核心线程数时,用于:
7.根据权利要求5所述的装置,其特征在于,所述确定模块在根据所述核心线程数、所述数据文件的数据量和所述数据库最大限制值,确定所述批量提交条数时,用于:
8.一种电子设备,其特征在于,包括:
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-4中任一项所述的方法。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1-4中任一项所述的方法。