本技术涉及数据库等,尤其涉及一种数据删除方法、装置、设备及存储介质。
背景技术:
1、随着时间的推移,数据库中会积累大量的历史版本数据和无用数据等。这些数据不仅消耗存储资源,还会影响数据库的性能(例如查询性能),因此,需要删除数据库中的历史版本数据和无用数据等。
2、在分布式关系型数据库(例如tidb数据库)中,分布式关系型数据库的存储引擎(例如rocksdb)采用了mvcc(multiversion concurrency control,多版本并发控制)机制,因此删除数据需要进行gc(garbage collection,垃圾回收),以删除需要无用的历史版本数据。在gc过程中,通常基于索引和limit(限制)下推,从分布式关系型数据库的数据表中删除数据。
3、在删除的数据较多时,通常基于索引和limit(限制)下推,从分布式关系型数据库的数据表中删除数据,导致数据删除的效率较低。
技术实现思路
1、本技术提供一种数据删除方法、装置、设备及存储介质,用以解决在删除的数据较多时,通过现有技术从分布式关系型数据库的数据表中删除数据,存在数据删除的效率较低的问题。
2、第一方面,本技术提供一种数据删除方法,包括:
3、确定第一数据表中的待删除数据行,所述第一数据表为待删除数据的表;
4、在所述第一数据表中数据行的第一数量大于或等于第一阈值、且所述第一数据表不为分区表时,确定分页键;
5、判断所述待删除数据行的第二数量是否小于第二阈值;
6、在小于所述第二阈值时,根据所述分页键,对所述待删除数据行进行分页处理,得到第一分页结果;并根据所述第一分页结果,从所述第一数据表中删除待删除数据行;
7、在大于或等于所述第二阈值时,根据所述分页键,对所述第一数据表中除所述待删除数据行之外的待保留数据行进行分页处理,得到第二分页结果;根据所述第二分页结果,将所述待保留数据行插入新数据表;并删除所述第一数据表。
8、可选的,所述确定分页键,包括:
9、判断所述第一数据表是否为聚簇表;
10、若为所述聚簇表,则判断所述第一数据表是否具有主键和/或唯一索引,若具有所述主键和/或所述唯一索引,则根据所述主键和/或所述唯一索引,确定所述分页键;若不具有所述主键和/或所述唯一索引,则将所述第一数据表内的第一预设数量个字段进行拼接,得到所述分页键;
11、若不为所述聚簇表,则根据所述第一数据表的主键、唯一索引和行标识中的至少一项,确定所述分页键。
12、可选的,所述根据所述分页键,对待删除数据行进行分页处理,得到第一分页结果,包括:
13、根据所述分页键,按照第二预设数量,将所述待删除数据行划分为多页,每页中包括所述待删除数据行中的所述第二预设数量个数据行;
14、将所述每页中所述第二预设数量个数据行在所述第一数据表中的最小行号和最大行号,确定为第一分页结果。
15、可选的,所述第一分页结果中包括所述每页中所述第二预设数量个数据行在所述第一数据表中的最小行号和最大行号;
16、所述根据第一分页结果,从所述第一数据表中删除待删除数据行,包括:
17、按照所述每页中所述第二预设数量个数据行在所述第一数据表中的最小行号和最大行号,通过多个线程并行从所述第一数据表中删除所述每页中所述第二预设数量个数据行。
18、可选的,所述根据所述分页键,对所述第一数据表中除所述待删除数据行之外的待保留数据行进行分页处理,得到第二分页结果,包括:
19、根据所述分页键,按照第三预设数量,将所述待保留数据行划分为多页,每页中包括所述待保留数据行中的所述第三预设数量个数据行;
20、将所述每页中所述第三预设数量个数据行在所述第一数据表中的最小行号和最大行号,确定为第二分页结果。
21、可选的,所述第二分页结果中包括所述每页中所述第三预设数量个数据行在所述第一数据表中的最小行号和最大行号;
22、所述根据所述第二分页结果,将所述待保留数据行插入新数据表,包括:
23、按照所述每页中所述第三预设数量个数据行在所述第一数据表中的最小行号和最大行号,通过多个线程并行将所述每页中所述第三预设数量个数据行插入所述新数据表。
24、可选的,所述方法还包括:
25、在所述第一数量大于或等于第一阈值时,判断所述第一数据表是否为分区表;
26、在为所述分区表时,根据第一删除操作,从所述第一数据表中删除所述待删除数据行。
27、可选的,所述方法还包括:
28、判断所述第一数量是否小于所述第一阈值;
29、在小于所述第一阈值时,根据第一删除操作,从所述第一数据表中删除所述待删除数据行。
30、第二方面,本技术提供一种数据删除装置,包括:
31、第一确定模块,用于确定第一数据表中的待删除数据行,所述第一数据表为待删除数据的表;
32、第二确定模块,用于在所述第一数据表中数据行的第一数量大于或等于第一阈值、且所述第一数据表不为分区表时,确定分页键;
33、判断模块,用于判断所述待删除数据行的第二数量是否小于第二阈值;
34、分页模块,用于在小于所述第二阈值时,根据所述分页键,对所述待删除数据行进行分页处理,得到第一分页结果;删除模块,用于并根据所述第一分页结果,从所述第一数据表中删除待删除数据行;
35、所述分页模块,还用于在大于或等于所述第二阈值时,根据所述分页键,对所述第一数据表中除所述待删除数据行之外的待保留数据行进行分页处理,得到第二分页结果;插入模块,用于根据所述第二分页结果,将所述待保留数据行插入新数据表;所述删除模块,还用于并删除所述第一数据表。
36、可选的,第二确定模块具体用于:
37、判断所述第一数据表是否为聚簇表;
38、若为所述聚簇表,则判断所述第一数据表是否具有主键和/或唯一索引,若具有所述主键和/或所述唯一索引,则根据所述主键和/或所述唯一索引,确定所述分页键;若不具有所述主键和/或所述唯一索引,则将所述第一数据表内的第一预设数量个字段进行拼接,得到所述分页键;
39、若不为所述聚簇表,则根据所述第一数据表的主键、唯一索引和行标识中的至少一项,确定所述分页键。
40、可选的,分页模块具体用于:
41、根据所述分页键,按照第二预设数量,将所述待删除数据行划分为多页,每页中包括所述待删除数据行中的所述第二预设数量个数据行;
42、将所述每页中所述第二预设数量个数据行在所述第一数据表中的最小行号和最大行号,确定为第一分页结果。
43、可选的,所述第一分页结果中包括所述每页中所述第二预设数量个数据行在所述第一数据表中的最小行号和最大行号;
44、删除模块具体用于:
45、按照所述每页中所述第二预设数量个数据行在所述第一数据表中的最小行号和最大行号,通过多个线程并行从所述第一数据表中删除所述每页中所述第二预设数量个数据行。
46、可选的,分页模块具体用于:
47、根据所述分页键,按照第三预设数量,将所述待保留数据行划分为多页,每页中包括所述待保留数据行中的所述第三预设数量个数据行;
48、将所述每页中所述第三预设数量个数据行在所述第一数据表中的最小行号和最大行号,确定为第二分页结果。
49、可选的,所述第二分页结果中包括所述每页中所述第三预设数量个数据行在所述第一数据表中的最小行号和最大行号;
50、插入模块具体用于:
51、按照所述每页中所述第三预设数量个数据行在所述第一数据表中的最小行号和最大行号,通过多个线程并行将所述每页中所述第三预设数量个数据行插入所述新数据表。
52、可选的,判断模块,还用于在所述第一数量大于或等于第一阈值时,判断所述第一数据表是否为分区表;
53、删除模块,还用于在为所述分区表时,根据第一删除操作,从所述第一数据表中删除所述待删除数据行。
54、可选的,判断模块,还用于判断所述第一数量是否小于所述第一阈值;
55、删除模块,还用于在小于所述第一阈值时,根据第一删除操作,从所述第一数据表中删除所述待删除数据行。
56、第三方面,本技术实施例提供一种数据删除设备,包括:存储器和处理器;
57、存储器存储计算机执行指令;
58、处理器执行存储器存储的计算机执行指令,使得处理器执行第一方面任一项的方法。
59、第四方面,本技术实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当计算机执行指令被处理器执行时用于实现第一方面任一项的方法。
60、第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被计算机执行时实现第一方面任一项的方法。
61、本技术实施例提供的数据删除方法、装置、设备及存储介质,在该方法中,当第一数据表的第一数量大于或等于第一阈值、且该表不为分区表时,如果第一数据表的第二数量小于第二阈值,对待删除数据行进行分页处理,得到第一分页结果,根据第一分页结果删除待删除数据行,无需扫描无用数据,提高了删除数据的效率。此外,如果第一数据表的第二数量大于或等于第二阈值,对待删除数据行之外的待保留数据行进行分页处理,得到第二分页结果,根据第二分页结果,将待保留数据插入新数据表,删除第一数据表,提升了在第一数据表中的待删除数据行较多时的数据删除效率。