CN116431601A - 数据表创建方法及设备 - Google Patents

数据表创建方法及设备 Download PDF

Info

Publication number
CN116431601A
CN116431601A CN202310210854.1A CN202310210854A CN116431601A CN 116431601 A CN116431601 A CN 116431601A CN 202310210854 A CN202310210854 A CN 202310210854A CN 116431601 A CN116431601 A CN 116431601A
Authority
CN
China
Prior art keywords
partition
data
target
migrated
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310210854.1A
Other languages
English (en)
Inventor
段牧知
李晓静
王晨
李博
张旭明
张博宇
何奕霏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202310210854.1A priority Critical patent/CN116431601A/zh
Publication of CN116431601A publication Critical patent/CN116431601A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供一种数据表创建方法及设备,该方法包括:获取第一分区表的创建指令,创建指令中包括注释信息,注释信息用于指示创建跳跃一致性哈希类型的分区表;根据创建指令创建第一分区表、以及生成落盘信息,落盘信息中包括注释信息;根据落盘信息生成第一分区表对应的表定义缓存,表定义缓存包括:第一分区表的类型为跳跃一致性哈希类型。基于跳跃一致性哈希类型的分区表,提高了迁移数据的效率。

Description

数据表创建方法及设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据表创建方法及设备。
背景技术
数据库服务器中可以包括分区表,分区表中可以包括多个分区,分区中可以存储多个数据。
在相关技术中,分区表通常为取模哈希类型的分区表。当分区表的分区数发生变更时,需要根据分区数对分区表中的所有数据都进行迁移。然而,在上述过程中,由于迁移的数据量大,导致迁移数据的效率低。
发明内容
本申请的多个方面提供一种数据表创建方法及设备,用于提高迁移数据的效率。
第一方面,本申请实施例提供一种数据表创建方法,包括:
获取第一分区表的创建指令,所述创建指令中包括注释信息,所述注释信息用于指示创建跳跃一致性哈希类型的分区表;
根据所述创建指令创建所述第一分区表、以及生成落盘信息,所述落盘信息中包括所述注释信息;
根据所述落盘信息生成所述第一分区表对应的表定义缓存,所述表定义缓存包括:所述第一分区表的类型为跳跃一致性哈希类型。
在一种可能的实施方式中,根据所述落盘信息生成所述第一分区表对应的表定义缓存,包括:
根据所述落盘信息,确定所述第一分区表的类型为所述跳跃一致性哈希类型;
根据所述第一分区表的类型,生成所述表定义缓存。
在一种可能的实施方式中,所述方法还包括:
获取所述第一分区表的操作指令;
根据所述操作指令,在所述第一分区表对应的所述表定义缓存中获取所述第一分区表的类型;
根据所述第一分区表的类型和所述操作指令,对所述第一分区表进行操作处理。
在一种可能的实施方式中,所述操作指令为分区表更新指令,所述分区更新指令为分区增加指令或者分区删除指令;
根据所述第一分区表的类型和所述操作指令,对所述第一分区表进行操作处理,包括:
根据所述第一分区表的类型和所述分区更新指令,确定所述第一分区表的目标分区数;
根据所述分区更新指令和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区,所述待迁移数据的数量小于所述第一分区表中数据的数量;
将所述待迁移数据迁移至对应的目标分区。
在一种可能的实施方式中,根据所述分区更新指令和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区,包括:
若所述分区更新指令为分区增加指令,则根据所述第一分区表的数据和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区;
若所述分区更新指令为分区删除指令,则根据所述分区删除指令在所述第一分区表中确定待删除分区,将所述待删除分区中的数据确定为所述待迁移数据,并根据所述待迁移数据和所述目标分区数,确定所述待迁移数据的目标分区。
在一种可能的实施方式中,根据所述第一分区表的数据和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区,包括:
根据所述第一分区表中的数据和所述目标分区数,确定所述第一分区表中每个数据的迁移分区,所述迁移分区为所述数据当前所在的分区或者新增的分区;
根据所述第一分区表中每个数据的迁移分区,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区。
在一种可能的实施方式中,根据所述第一分区表中每个数据的迁移分区,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区,包括:
针对所述第一分区表中的任意一个数据,若所述数据的迁移分区为所述新增的分区,则将所述数据确定为所述待迁移数据,以及将所述数据的迁移分区确定为所述待迁移数据的目标分区。
在一种可能的实施方式中,针对所述第一分区表中的任意一个数据;根据所述数据和所述目标分区数,确定所述数据的迁移分区,包括:
根据所述数据和原始种子,生成所述数据对应的伪随机数;
将新增的分区数和所述目标分区数的比值,确定为对比值;
若所述伪随机数大于或等于所述对比值,则确定所述数据的迁移分区为所述数据当前所在的分区;
若所述伪随机数小于所述对比值,则确定所述数据的迁移分区为所述新增的分区。
在一种可能的实施方式中,根据所述待迁移数据和所述目标分区数,确定所述待迁移数据的目标分区,包括:
通过跳跃一致性哈希算法,对所述待迁移数据和所述目标分区数进行处理,得到分区标识;
将所述分区标识对应的分区,确定为所述待迁移数据的目标分区。
在一种可能的实施方式中,将所述待迁移数据迁移至对应的目标分区,包括:
在第一时段内,通过至少两个线程在所述第一分区表中对所述待迁移数据进行并行迁移处理,得到更新后的第一分区表;
确定在所述第一时段内对所述第一分区表的数据操纵语言DML操作,所述DML操作包括插入操作、更新操作和删除操作;
在所述更新后的第一分区表中同步所述DML操作。
在一种可能的实施方式中,所述DML操作为插入操作;在所述更新后的第一分区表中同步所述DML操作,包括:
确定所述插入操作对应的第一数据、以及所述第一数据在所述第一分区表中的原始插入分区;
根据所述目标分区数,确定所述第一数据在所述第一分区表中的目标插入分区;
若所述原始插入分区与所述目标插入分区不同,将所述第一数据插入至所述目标插入分区,在所述原始插入分区中删除所述第一数据,以及更新所述插入操作对应的操作日志。
在一种可能的实施方式中,所述DML操作为删除操作;在所述更新后的第一分区表中同步所述DML操作,包括:
确定所述删除操作对应的第二数据、以及所述第二数据在所述第一分区表中的原始删除分区;
根据所述目标分区数,确定所述第二数据在所述第一分区表中的目标删除分区;
若所述原始删除分区与所述目标删除分区不同,根据所述原始删除分区和所述目标删除分区,更新所述删除操作对应的操作日志。
在一种可能的实施方式中,所述DML操作为更新操作;在所述更新后的第一分区表中同步所述DML操作,包括:
确定所述更新操作对应的第三数据、以及所述第三数据在所述第一分区表中的原始更新分区;
根据所述目标分区数,确定所述第三数据在所述第一分区表中的目标更新分区;
若所述原始更新分区与所述目标更新分区不同,则将更新后的第三数据插入至所述目标更新分区,在所述原始更新分区中删除更新后的第一数据,以及更新所述更新操作对应的操作日志。
在一种可能的实施方式中,所述待迁移数据的数量与所述第一分区表中的当前数据的数量之比为N/(M+N);
其中,所述M为所述第一分区表中的当前分区数,所述N为对所述第一分区表新增或者删除的分区数。
第二方面,本申请实施例提供一种数据表创建装置,包括:第一获取模块、创建模块和生成模块,其中,
所述第一获取模块用于,获取第一分区表的创建指令,所述创建指令中包括注释信息,所述注释信息用于指示创建跳跃一致性哈希类型的分区表;
所述创建模块用于,根据所述创建指令创建所述第一分区表、以及生成落盘信息,所述落盘信息中包括所述注释信息;;
所述生成模块用于,根据所述落盘信息生成所述第一分区表对应的表定义缓存,所述表定义缓存包括:所述第一分区表的类型为跳跃一致性哈希类型。
在一种可能的实施方式中,所述生成模块具体用于:
根据所述落盘信息,确定所述第一分区表的类型为所述跳跃一致性哈希类型;
根据所述第一分区表的类型,生成所述表定义缓存。
在一种可能的实施方式中,所述装置还包括第二获取模块和操作模块,其中,
所述第一获取模块用于,获取所述第一分区表的操作指令;
所述第二获取模块用于,根据所述操作指令,在所述第一分区表对应的所述表定义缓存中获取所述第一分区表的类型;
所述操作模块用于,根据所述第一分区表的类型和所述操作指令,对所述第一分区表进行操作处理。
在一种可能的实施方式中,所述操作指令为分区表更新指令,所述分区更新指令为分区增加指令或者分区删除指令;所述操作模块具体用于:
根据所述第一分区表的类型和所述分区更新指令,确定所述第一分区表的目标分区数;
根据所述分区更新指令和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区,所述待迁移数据的数量小于所述第一分区表中数据的数量;
将所述待迁移数据迁移至对应的目标分区。
在一种可能的实施方式中,所述操作模块具体用于:
若所述分区更新指令为分区增加指令,则根据所述第一分区表的数据和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区;
若所述分区更新指令为分区删除指令,则根据所述分区删除指令在所述第一分区表中确定待删除分区,将所述待删除分区中的数据确定为所述待迁移数据,并根据所述待迁移数据和所述目标分区数,确定所述待迁移数据的目标分区。
在一种可能的实施方式中,所述操作模块具体用于:
根据所述第一分区表中的数据和所述目标分区数,确定所述第一分区表中每个数据的迁移分区,所述迁移分区为所述数据当前所在的分区或者新增的分区;
根据所述第一分区表中每个数据的迁移分区,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区。
在一种可能的实施方式中,所述操作模块具体用于:
针对所述第一分区表中的任意一个数据,若所述数据的迁移分区为所述新增的分区,则将所述数据确定为所述待迁移数据,以及将所述数据的迁移分区确定为所述待迁移数据的目标分区。
在一种可能的实施方式中,针对所述第一分区表中的任意一个数据;所述操作模块具体用于:
根据所述数据和原始种子,生成所述数据对应的伪随机数;
将新增的分区数和所述目标分区数的比值,确定为对比值;
若所述伪随机数大于或等于所述对比值,则确定所述数据的迁移分区为所述数据当前所在的分区;
若所述伪随机数小于所述对比值,则确定所述数据的迁移分区为所述新增的分区。
在一种可能的实施方式中,所述操作模块具体用于:
通过跳跃一致性哈希算法,对所述待迁移数据和所述目标分区数进行处理,得到分区标识;
将所述分区标识对应的分区,确定为所述待迁移数据的目标分区。
在一种可能的实施方式中,所述操作模块具体用于:
在第一时段内,通过至少两个线程在所述第一分区表中对所述待迁移数据进行并行迁移处理,得到更新后的第一分区表;
确定在所述第一时段内对所述第一分区表的数据操纵语言DML操作,所述DML操作包括插入操作、更新操作和删除操作;
在所述更新后的第一分区表中同步所述DML操作。
在一种可能的实施方式中,所述DML操作为插入操作;所述操作模块具体用于:
确定所述插入操作对应的第一数据、以及所述第一数据在所述第一分区表中的原始插入分区;
根据所述目标分区数,确定所述第一数据在所述第一分区表中的目标插入分区;
若所述原始插入分区与所述目标插入分区不同,将所述第一数据插入至所述目标插入分区,在所述原始插入分区中删除所述第一数据,以及更新所述插入操作对应的操作日志。
在一种可能的实施方式中,所述DML操作为删除操作;所述操作模块具体用于:
确定所述删除操作对应的第二数据、以及所述第二数据在所述第一分区表中的原始删除分区;
根据所述目标分区数,确定所述第二数据在所述第一分区表中的目标删除分区;
若所述原始删除分区与所述目标删除分区不同,根据所述原始删除分区和所述目标删除分区,更新所述删除操作对应的操作日志。
在一种可能的实施方式中,所述DML操作为更新操作;所述操作模块具体用于:
确定所述更新操作对应的第三数据、以及所述第三数据在所述第一分区表中的原始更新分区;
根据所述目标分区数,确定所述第三数据在所述第一分区表中的目标更新分区;
若所述原始更新分区与所述目标更新分区不同,则将更新后的第三数据插入至所述目标更新分区,在所述原始更新分区中删除更新后的第一数据,以及更新所述更新操作对应的操作日志。
在一种可能的实施方式中,所述待迁移数据的数量与所述第一分区表中的当前数据的数量之比为N/(M+N);
其中,所述M为所述第一分区表中的当前分区数,所述N为对所述第一分区表新增或者删除的分区数。
第三方面,本申请实施例提供一种数据库服务器,包括:存储器和处理器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行第一方面任一项所述的数据表创建方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时用于实现第一方面任一项所述的数据表创建方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面任一项所示的数据表创建方法。
本申请实施例提供一种数据表创建方法及设备,数据库服务器可以获取第一分区表的创建指令,并根据创建指令创建第一分区表、以及生成落盘信息。数据库服务器可以根据落盘信息生成第一分区表对应的表定义缓存,表定义缓存包括:第一分区表的类型为跳跃一致性哈希类型。由于第一分区表为跳跃一致性哈希类型,对第一分区表进行操作时可以大幅减少待迁移数据;且可以通过至少两个线程对待迁移数据进行并行迁移处理,提高了迁移速度;且在第一分区表中增加或删除分区时的操作减少,减少了生成的日志文件,综合提高了迁移数据的效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请示例性实施例提供的一种应用场景的示意图;
图2A为相关技术中在第一分区表中增加分区的示意图;
图2B为相关技术中在第一分区表中删除分区的示意图;
图3为本申请示例性实施例提供的一种数据表创建方法的流程示意图;
图4为本申请示例性实施例提供一种数据表创建方法的过程示意图;
图5为本申请示例性实施例提供的一种数据处理方法的流程示意图;
图6为本申请示例性实施例提供的在第一时段内并行迁移处理和DML操作的示意图;
图7为本申请示例性实施例提供的另一种数据处理方法的流程示意图;
图8为本申请示例性实施例提供的确定迁移分区的示意图;
图9A为本申请示例性实施例提供的待迁移数据的数量的示意图一;
图9B为相关技术中待迁移数据的数量的示意图一;
图10为本申请示例性实施例提供的一种并行迁移的示意图一;
图11为本申请示例性实施例提供的一种更新第一分区表的示意图一;
图12为本申请示例性实施例提供的又一种数据处理方法的流程示意图;
图13A为本申请示例性实施例提供的待迁移数据的数量的示意图二;
图13B为相关技术中待迁移数据的数量的示意图二;
图14为本申请示例性实施例提供的一种并行迁移的示意图二;
图15为本申请示例性实施例提供的一种更新第一分区表的示意图二;
图16为本申请示例性实施例提供的一种数据表创建装置的结构示意图;
图17为本申请示例性实施例提供的另一种数据表创建装置的结构示意图;
图18为本申请示例性实施例提供的一种数据库服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请示例性实施例提供的一种应用场景的示意图。请参见图1,数据库服务器中可以包括第一分区表,第一分区表可以为跳跃一致性哈希类型的分区表。第一分区表中可以包括多个分区,分别为分区1、分区2、分区3、……、分区M。
数据库服务器可以获取第一分区表的操作指令,并根据操作指令对第一分区表进行处理。例如,若操作指令为分区更新指令,数据库服务器可以根据分区更新指令确定第一分区表中的目标分区数。例如,若第一分区表中的当前分区数为M,分区更新指令为在第一分区表中增加N个分区,则第一分区表的目标分区数为M+N,则更新后的第一分区表中可以包括多个分区,分别为分区1、分区2、分区3、……、分区M、分区M+1、……、分区M+N。
第一分区表中的分区数更新为目标分区数之后,为了平衡各个分区中的数据负载,可以将原M个分区中的部分数据,迁移到新增的N个分区中。例如,可以将分区1和分区2中的部分数据迁移至分区M+1;可以将分区3、……、分区M中的部分数据迁移至分区M+N。
在相关技术中,分区表的类型通常为取模哈希类型的分区表。当分区表的分区数发生变更时,需要根据分区数对分区表中的所有数据都进行迁移。然而,在上述过程中,由于迁移的数据量大,导致迁移数据的效率低。
在本申请实施例中,数据库服务器可以获取第一分区表的创建指令,根据创建指令创建第一分区表。第一分区表的类型可以为跳跃一致性哈希类型。基于第一分区表为跳跃一致性哈希类型的分区表,数据库服务器对第一分区表进行操作时可以大幅减少待迁移数据,无需迁移第一分区表中的所有数据,因此提高了迁移数据的效率。
为了便于理解本申请的技术方案,首先结合图2A,对相关技术中在第一分区表中增加分区的情况进行说明;结合图2B,对相关技术中在第一分区表中删除分区的情况进行说明。
图2A为相关技术中在第一分区表中增加分区的示意图。请参见图2A,包括过程1和过程2。
若第一分区表为表1,表1中包括3个分区,分别为分区1、分区2和分区3。每个分区中存储有多个数据。若需要在表1中增加1个分区,则表1的目标分区数为4。
在过程1中,数据库服务器可以按照目标分区数4新建一个临时表。该临时表中可以包括4个分区,分别为分区1、分区2、分区3和分区4。数据库服务器可以逐条读取表1中的所有数据,并将该所有数据写入到临时表。如图2A所示,可以读取表1中分区1的数据,将分区1中的数据写入到临时表中的分区1、分区2、分区3和分区4;可以读取表1中分区2的数据,将分区2中的数据写入到临时表中的分区1、分区2、分区3和分区4;可以读取表1中分区3的数据,将分区3中的数据写入到临时表中的分区1、分区2、分区3和分区4,以实现将表1中的所有数据写入到临时表中。
在过程2中,可以将表1重命名为“备份表”,将临时表重命名为“表1”。重命名之后,可以删除“备份表”即原表1,保留临时表即更新后的“表1”,则可以实现在表1中新增1个分区,将表1从3个分区更新为4个分区。
图2B为相关技术中在第一分区表中删除分区的示意图。请参见图2B,包括过程1和过程2。
若第一分区表为表2,表2中包括4个分区,分别为分区1、分区2、分区3和分区4。若需要对表2删除1个分区,则表2的目标分区数为3。
在过程1中,数据库服务器可以按照目标分区数3,新建一个临时表,该临时表中包括3个分区,可以分别为分区1、分区2和分区3。数据库服务器可以逐条读取表2中的所有数据,并将该所有数据写入到临时表。
在过程2中,可以将表2重命名为“备份表”,将临时表重命名为“表2”。重命名之后,可以删除“备份表”即原表2,保留临时表即更新后的“表2”,则可以实现在表2中删除1个分区,将表2从4个分区更新为3个分区。
在上述图2A和图2B所示的实施例中,相关技术中对第一分区表更新时,即在第一分区表中增加或删除分区时,都需要对第一分区表中所有的数据进行迁移,迁移数据的数据量大,导致迁移数据的效率低。
下面,通过具体实施例对本申请所示的技术方案进行详细说明。需要说明的是,下面几个实施例可以单独存在,也可以相互结合,对于相同或相似的内容,在不同的实施例中不再重复说明。
本申请实施例可以包括创建第一分区表的过程、以及对第一分区表进行操作的过程。
下面,首先结合图3-图4,对创建第一分区表的过程进行说明。
图3为本申请示例性实施例提供的一种数据表创建方法的流程示意图。请参见图3,该方法可以包括:
S301、获取第一分区表的创建指令。
本申请实施例的执行主体可以为数据库服务器,也可以为设置在数据库服务器中的数据表创建装置。数据表创建装置可以通过软件实现,也可以通过软件和硬件的结合实现。数据表创建装置可以为数据库服务器中的处理器。为了便于理解,在下文中,以执行主体为数据库服务器为例进行说明。
创建指令中可以包括注释信息(Comment)。注释信息可以用于指示创建跳跃一致性哈希类型的分区表。
数据库服务器可以执行第一分区表的创建语句,以获取第一分区表的创建指令。其中,创建语句可以为(Structured Query Language,SQL)语句。
例如,若创建语句为:CREATE TABLE test(id INT),COMMENT='JUMP_CONSISTENT_HASH=ON' , PARTITION BY HASH (id)PARTITIONS 3,则数据库服务器可以执行该创建语句,以获取第一分区表的创建指令。
S302、根据创建指令创建第一分区表、以及生成落盘信息。
可选地,数据库服务器获取创建指令之后,可以根据创建指令创建第一分区表。例如,若创建指令指示创建表1为第一分区表,第一分区表的类型为跳跃一致性哈希类型,则数据库服务器可以创建表1为跳跃一致性哈希类型的分区表。
在一可选实施例中,数据库服务器可以通过Lex Yacc语法对创建语句进行解析处理,获取待创建的第一分区表中分区的相关信息,该相关信息中可以包括注释信息;可以根据分区的相关信息生成落盘信息,该落盘信息中可以包括注释信息;可以将落盘信息保存为二进制的落盘文件。落盘文件可以为tab_obj文件。
例如,若关于第一分区表的创建语句包括:创建第一分区表为表1,表1的分区表类型为跳跃一致性哈希分区表。表1包括分区1、分区2、分区3和分区4。则数据库服务器可以执行关于第一分区表的创建语句,以获取第一分区表的创建指令。数据库服务器可以通过LexYacc语法对该创建语句进行解析,获取待创建的第一分区表中分区的相关信息。假设分区的相关信息中可以包括:第一分区表为跳跃一致性哈希类型的分区表、分区标识1、分区标识2、分区标识3和分区标识4等信息,则可以将该相关信息生成落盘信息1,并将该落盘信息1保存为落盘文件1。
S303、根据落盘信息生成第一分区表对应的表定义缓存。
表定义缓存中可以包括:第一分区表的分区表类型为跳跃一致性哈希类型。
在一可选实施例中,可以通过如下方式,根据落盘信息生成第一分区表对应的表定义缓存:根据落盘信息,确定第一分区表的类型为跳跃一致性哈希类型;根据第一分区表的类型,生成表定义缓存。
例如,若落盘信息中包括表1为跳跃一致性哈希类型的分区表、分区标识1、分区标识2、分区标识3和分区标识4等信息,则数据库服务器可以在落盘信息识别注释信息,以确定表1的类型为跳跃一致性哈希类型,并根据第一分区表的类型生成表1对应的表定义缓存。
可选地,表定义缓存可以是一个静态表缓存,对应唯一的第一分区表。第一分区表中可以包括多个分区。可以通过线程对第一分区表中的任意一个分区进行操作,即可以在分区中进行读取数据、插入数据、删除数据、更新数据等操作。
在本申请实施例中,数据库服务器可以获取第一分区表的创建指令,并根据创建指令创建第一分区表、以及生成落盘信息。数据库服务器可以根据落盘信息生成第一分区表对应的表定义缓存。由于创建指令中包括第一分区表的分区表类型,分区表类型可以为跳跃一致性哈希分区表,则可以根据创建指令创建分区表类型为跳跃一致性哈希分区表的第一分区表。基于跳跃一致性哈希分区表,对第一分区表进行更新时,可以大幅减少待迁移数据,提高了迁移效率。
下面,结合图4,对上述创建第一分区表的方法进行进一步详细说明。
图4为本申请示例性实施例提供一种数据表创建方法的过程示意图。请参见图4,包括过程1和过程2。其中,过程1为落盘前的过程,过程2为落盘后的过程。
在过程1中,数据库服务器可以执行关于第一分区表的创建语句,以获取第一分区表的创建指令。数据库服务器可以通过Lex Yacc语法对创建语句进行解析处理,获取待创建的第一分区表中分区的相关信息,并将分区的相关信息生成落盘信息,落盘信息中可以包括注释信息。数据库服务器可以将落盘信息保存为二进制的落盘文件。
可选地,数据库服务器可以采用两级缓存机制,第一层为表定义缓存,第二层为第一分区表。在过程2中,数据库服务器可以根据创建指令创建第一分区表,并根据落盘信息,生成第一分区表对应的表定义缓存。
可选地,表定义缓存中可以包括第一分区表、以及第一分区表的分区表类型。第一分区表的分区表类型可以为跳跃一致性哈希分区表。
可以通过线程对第一分区表中的任意一个分区进行操作,即可以在分区中进行读取数据、插入数据、删除数据、更新数据等操作。
在本申请实施例中,数据库服务器可以获取第一分区表的创建指令,并根据创建指令创建第一分区表、以及生成落盘信息。数据库服务器可以根据落盘信息生成第一分区表对应的表定义缓存。由于创建指令中包括第一分区表的分区表类型,分区表类型可以为跳跃一致性哈希分区表,则可以根据创建指令创建分区表类型为跳跃一致性哈希分区表的第一分区表。基于跳跃一致性哈希分区表,对第一分区表进行更新时,可以大幅减少待迁移数据,提高了迁移效率。
下面,结合图5-图15,对第一分区表进行操作的过程进行说明。
图5为本申请示例性实施例提供的一种数据处理方法的流程示意图。请参见图5,该方法可以包括:
S501、获取第一分区表的操作指令,操作指令为分区表更新指令。
分区更新指令可以为分区增加指令或者分区删除指令。其中,分区增加指令可以用于指示在第一分区表中增加分区;分区删除指令可以用于指示在第一分区表中删除部分分区。
可选地,数据库服务器可以执行计算机程序语句,以获取第一分区表的操作指令。例如,若计算机程序语句1为ALTER TABLE TEST ADD PARTITION PARTITIONS 2,则数据库服务器可以执行该计算机程序语句1,以获取第一分区表的的操作指令,该操作指令为分区增加指令,指示在第一分区表中增加2个分区;若计算机程序语句2为ALTER TABLE TESTCOALESCE PARTITION 1,则数据库服务器可以执行该计算机程序语句2,以获取第一分区表的操作指令为分区删除指令,指示在第一分区表中删除1个分区。
S502、根据分区表更新指令,在第一分区表对应的表定义缓存中获取第一分区表的类型。
数据库服务器中可以包括第一分区表的表定义缓存。
由于表定义缓存中可以包括:第一分区表的分区表类型可以为跳跃一致性哈希分区表,则数据库服务器可以根据操作指令,在第一分区表对应的表定义缓存中获取第一分区表的类型。
例如,若第一分区表为表1,对应的表定义缓存1,则数据库服务器可以在表定义缓存1中,获取表1的类型为跳跃一致性哈希类型。
S503、根据第一分区表的类型和分区更新指令,确定第一分区表的目标分区数。
可选地,数据库服务器获取第一分区表的类型之后,若操作指令为分区更新指令,数据库服务器可以确定第一分区表中的当前分区数,并根据第一分区表的类型、分区更新指令和当前分区数确定第一分区表的目标分区数。
例如,若第一分区表的当前分区数为3,分区更新指令为分区增加指令,指示在第一分区表中新增2个分区,则可以根据当前分区数3和分区更新指令,确定第一分区表的目标分区数为5;若分区更新指令为分区删除指令,指示在第一分区表中删除1个分区,则可以根据当前分区数3和分区更新指令,确定第一分区表的目标分区数为2。
S504、根据分区更新指令和目标分区数,在第一分区表中确定待迁移数据和待迁移数据的目标分区。
待迁移数据的数量可以小于第一分区表中数据的数量。
可选地,待迁移数据的数量与第一分区表中的当前数据的数量之比可以为N/(M+N)。其中,M可以为第一分区表中的当前分区数,N可以为对第一分区表新增或删除的分区数。
例如,若第一分区表中的当前分区数M为3,对第一分区表新增的分区数N可以为2,则待迁移数据的数量与第一分区表中的当前数据的数量之比可以为2/5,即若第一分区表中的当前数据的数量为100,则待迁移数据的数量可以为40;若第一分区表中的当前分区数M为3,对第一分区表删除的分区数N可以为1,则待迁移数据的数量与第一分区表中的当前数据的数量之比可以为1/2,即若第一分区表中的当前数据的数量为100,则待迁移数据的数量可以为50。
可选地,在第一分区表中确定待迁移数据和待迁移数据的目标分区,可以包括如下2种情况:
情况1:分区更新指令为分区增加指令。
在该种情况下,则可以根据第一分区表的数据和目标分区数,在第一分区表中确定待迁移数据和待迁移数据的目标分区。
例如,若第一分区表中包括分区1、分区2和分区3,即第一分区表中当前分区数为3,若分区更新指令为增加2个分区,分别为分区4和分区5,则目标分区数为5,第一分区表中可以包括分区1、分区2、分区3、分区4和分区5,则可以根据第一分区表中的数据和目标分区数5,在第一分区表中确定待迁移数据和待迁移数据的目标分区。假设待迁移数据有20个,该20个待迁移数据的目标分区可以包括分区4和分区5。
情况2:分区更新指令为分区删除指令。
在该种情况下,则可以根据分区删除指令在第一分区表中确定待删除分区,将待删除分区中的数据确定为待迁移数据,并根据待迁移数据和目标分区数,确定待迁移数据的目标分区。
若第一分区表中包括分区1、分区2和分区3,即第一分区表中当前分区数为3,若分区更新指令为分区删除指令,指示删除分区3,则可以根据分区删除指令在第一分区表中确定待删除分区为分区3,目标分区数为2,则可以将分区3中的数据确定为待迁移数据,并根据待迁移数据和目标分区数2,确定待迁移数据的目标分区可以包括分区1和分区2。
可选地,在上述2种情况中,针对任意一个待迁移数据,可以通过如下方式,进一步确定待迁移数据的目标分区:通过跳跃一致性哈希算法,对待迁移数据和目标分区数进行处理,得到分区标识;将分区标识对应的分区,确定为待迁移数据的目标分区。
跳跃一致性哈希算法(Jump Consistent Hash)是一种映射均匀、具备一致性的算法。跳跃一致性哈希算法可以将数据映射到不同的分区,可以避免重新映射全部数据,保证重新映射尽可能少的数据。
针对任意一个分区,分区具有分区标识。例如,分区1的标识可以为1,分区2的标识可以为2。
例如,若待迁移数据为数据1,目标分区数为5,即第一分区表中包括分区1、分区2、分区3、分区4和分区5,则可以通过跳跃一致性哈希算法对数据1和目标分区数5进行处理,得到分区标识为3,则可以将分区标识3对应的分区即分区3,确定为数据1的目标分区。
S505、将待迁移数据迁移至对应的目标分区。
在一可选实施例中,将待迁移数据迁移至对应的目标分区:在第一时段内,通过至少两个线程在第一分区表中对待迁移数据进行并行迁移处理,得到更新后的第一分区表;确定在第一时段内对第一分区表的数据操纵语言DML操作;在更新后的第一分区表中同步DML操作。
由于待迁移数据有多个,则可以在第一时段内,通过至少两个线程在第一分区表中对待迁移数据进行并行迁移处理,可以降低迁移时间,提高迁移效率。
例如,若待迁移的数据包括数据1、数据2、数据3、数据4和数据5,数据1、数据2和数据3对应的目标分区为分区4,数据4和数据5对应的目标分区为分区5,则可以在第一时段内,通过线程1将数据1、数据2和数据3迁移至分区4;并行地,可以通过线程2将数据4和数据5迁移至分区5,以得到更新后的第一分区表,则更新后的第一分区表中,分区4中存储有数据1、数据2和数据3,分区5中存储有数据4和数据5。
可选地,在第一时段内,可能存在对第一分区表进行的数据操纵语言(DataManipulation Language,DML)操作。
数据操纵语言DML可以用于对第一分区表中的数据进行操作,即可以用于插入、修改、删除和查询第一分区表中的数据。例如,数据操纵语言DML可以为“update table nameset field1=value 1”。
下面,结合图6,对上述在第一时段内的并行迁移处理和DML操作进行说明。
图6为本申请示例性实施例提供的在第一时段内并行迁移处理和DML操作的示意图。请参见图6,第一时段为t1至t2之间的时段。若第一分区表中包括分区1、分区2和分区3,在第一时段内事件1可以为对第一分区表中的待迁移数据进行并行迁移处理,得到更新后的第一分区表。更新后的第一分区表中可以包括分区1、分区2、分区3和分区4。事件2为对第一分区表中的数据进行DML操作,并生成对应的操作日志。DML操作可以包括插入操作、更新操作和删除操作。
在第一时段内完成事件1之后,由于事件2也是在同时段内对更新前的第一分区表进行DML操作,为了避免出现执行错误,则得到更新后的第一分区表之后,需要在更新后的第一分区表中,同步第一时段内对第一分区表的DML操作。例如,若事件2是在第一分区表的分区1中插入数据1,若在更新后的第一分区表中,确定数据1应插入到分区2,则可以在更新有的第一分区表中,将数据1插入分区2,在分区1中删除数据1,以实现在更新后的第一分区表中,同步第一时段内对第一分区表的DML操作。
在本申请实施例中,数据库服务器可以获取第一分区表的操作指令,并根据操作指令,在第一分区表对应的表定义缓存中获取第一分区表的类型。操作指令可以为分区更新指令。数据库服务器可以根据第一分区表的类型和分区更新指令,确定第一分区表的目标分区数。数据库服务器可以根据分区更新指令和目标分区数,在第一分区表中确定待迁移数据和待迁移数据的目标分区,并将待迁移数据迁移至对应的目标分区。基于第一分区表为跳跃一致性哈希分区表,待迁移数据的数量可以小于第一分区表中数据的数量,降低了迁移的数据量;可以通过至少两个线程对待迁移数据进行并行迁移处理,提高了迁移速度;增加或删除分区时的操作减少,生成的日志文件减少,主备同步速度加快,综合提高了迁移数据的效率。
由于对第一分区表进行更新包括增加分区和删除分区两种情况,下面,在图5所示实施例的基础上,通过图7对在第一分区表中增加分区的情况进行进一步详细说明;通过图12对在第一分区表中删除分区的情况进行进一步详细说明。
图7为本申请示例性实施例提供的另一种数据处理方法的流程示意图。请参见图7,该方法可以包括:
S701、获取第一分区表的分区更新指令。
可选地,数据库服务器可以执行计算机程序语句,以获取第一分区表的分区更新指令。该分区更新指令可以为分区增加指令。
例如,若计算机程序语句1为ALTER TABLE TEST ADD PARTITION PARTITIONS2,则数据库服务器可以执行该计算机程序语句1,以获取第一分区表的分区更新指令为分区增加指令,指示增加2个分区。
S702、根据分区更新指令,在第一分区表对应的表定义缓存中获取第一分区表的类型。
数据库服务器中可以包括第一分区表的表定义缓存。
由于表定义缓存中可以包括:第一分区表的分区表类型可以为跳跃一致性哈希分区表,则数据库服务器可以根据分区更新指令,在第一分区表对应的表定义缓存中获取第一分区表的类型。
例如,若第一分区表为表1,对应的表定义缓存1,则数据库服务器可以在表定义缓存1中,获取表1的类型为跳跃一致性哈希类型。
S703、根据第一分区表的类型和分区更新指令,确定第一分区表的目标分区数。
可选地,数据库服务器获取第一分区表的类型之后,则可以根据第一分区表的类型、分区更新指令确定第一分区表的目标分区数。
例如,若第一分区表的当前分区数为3,分区更新指令为分区增加指令,指示新增2个分区,则可以根据当前分区数3和分区更新指令,确定第一分区表的目标分区数为5。
例如,若分区更新指令为分区增加指令,指示第一分区表的目标分区数为5,则可以根据分区更新指令,确定第一分区表的目标分区数为5。
S704、根据第一分区表中的数据和目标分区数,确定第一分区表中每个数据的迁移分区。
迁移分区是指数据即将迁入的分区。针对第一分区表中的任意一个数据,数据的迁移分区可以为数据当前所在的分区或者新增的分区。
在一可选实施例中,可以通过如下方式,确定数据的迁移分区:根据数据和原始种子,生成数据对应的伪随机数;将新增的分区数和目标分区数的比值,确定为对比值;若伪随机数大于或等于对比值,则确定数据的迁移分区为数据当前所在的分区;若伪随机数小于对比值,则确定数据的迁移分区为新增的分区。
可选地,可以在数据库服务器中设置伪随机数生成器。伪随机数生成器可以用于生成伪随机数。
针对任意一个数据,可以通过伪随机数生成器,根据数据和原始种子生成数据对应的伪随机数。其中,原始种子可以为数字序列。例如,原始种子可以为2862933555777941757ULL。
例如,若数据1为0.5,原始种子为2862933555777941757ULL,则可以通过伪随机数生成器,根据0.5和2862933555777941757ULL,生成0.5对应的伪随机数1。假设生成的伪随机数1可以为0.365。
可选地,可以将新增的分区数和目标分区数的比值,确定为对比值。例如,若新增的分区数为2,目标分区数为5,则可以确定对比值为2/5。
针对第一分区表中的任意一个数据,根据伪随机数和对比值,确定数据的迁移分区可以包括如下2种情况:
情况1:伪随机数大于或等于对比值。
在该种情况下,则可以确定数据的迁移分区为数据当前所在的分区。
例如,若数据1当前所在的分区为分区1,数据1对应的伪随机数为0.516,对比值为2/5,则由于伪随机数0.516大于对比值2/5,则可以确定数据1的迁移分区为数据当前所在的分区,即分区1。
情况2:伪随机数小于对比值。
在该种情况下,则可以确定数据的迁移分区为新增的分区。
例如,若数据2当前所在的分区为分区1,新增的分区为分区4,数据2对应的伪随机数为0.315,对比值为2/5,则由于伪随机数0.315小于对比值2/5,则可以确定数据2的迁移分区为新增的分区,即分区4。
下面,结合图8,对确定数据的迁移分区进行说明。
图8为本申请示例性实施例提供的确定迁移分区的示意图。请参见图8,若第一分区表的当前分区数为1,数据K在分区1中。若第一分区表中新增分区2,若原始种子为2862933555777941757ULL,则可以根据数据K和原始种子,生成数据K对应的伪随机数1,假设伪随机数1为0.516。可以根据新增的分区数1和目标分区数2确定对比值1为1/2,则由于伪随机数1大于对比值1,可以确定数据K的迁移分区为新增的分区2;当第一分区表的目标分区数由2变更为3时,可以根据数据K和原始种子,生成数据K对应的伪随机数2,假设伪随机数2为0.358,根据新增的分区数1和目标分区数3确定对比值2为1/3,则由于伪随机数2大于对比值2,可以确定数据K的迁移分区为当前所在的分区即分区2;当第一分区表的目标分区数由3变更为4时,可以根据数据K和原始种子,生成数据K对应的伪随机数3,假设伪随机数3为0.135,根据新增的分区数1和目标分区数4确定对比值3为1/4,则由于伪随机数3小于对比值3,可以确定数据K的迁移分区为新增的分区即分区4。
S705、根据第一分区表中每个数据的迁移分区,在第一分区表中确定待迁移数据和待迁移数据的目标分区。
可选地,针对第一分区表中的任意一个数据,若数据的迁移分区为新增的分区,则将数据确定为待迁移数据,以及将数据的迁移分区确定为待迁移数据的目标分区。
例如,若数据2的迁移分区为新增的分区4,则可以将数据2确定为待迁移数据,并将数据2的迁移分区即分区4,确定为数据2的目标分区。
可选地,待迁移数据的数量可以小于第一分区表中数据的数量。
待迁移数据的数量与第一分区表中的当前数据的数量之比可以为N/(M+N)。其中,M可以为第一分区表中的当前分区数,N可以为对第一分区表新增的分区数。
例如,若第一分区表中的当前分区数M为3,对第一分区表新增的分区数N可以为2,则待迁移数据的数量与第一分区表中的当前数据的数量之比可以为2/5,即若第一分区表中的当前数据的数量为100,则待迁移数据的数量可以为40。
下面,结合图9A,对本申请中待迁移数据的数量进行说明;结合图9B,对相关技术中待迁移数据的数量进行说明。
图9A为本申请示例性实施例提供的待迁移数据的数量的示意图一。请参见图9A,若第一分区表中包括分区1、分区2、分区3和分区4,若分区4为新增的分区,若分区1、分区2、分区3中均存储有100个数据,则待迁移数据的数量可以为300*1/4=75个。假设分区1、分区2和分区3中分别包括25个待迁移数据,则可以分别读取分区1、分区2和分区3中的25个待迁移数据,共75个待迁移数据。可以将75个待迁移数据写入分区5中。其中,读取数据分区包括分区1、分区2、分区3和分区4,读取的数据的数量为75个;需要写入数据的分区为分区5,写入的数据的数量为75个。
图9B为相关技术中待迁移数据的数量的示意图一。请参见图9B,若第一分区表中包括分区1、分区2、分区3和分区4,若分区4为新增的分区,若分区1、分区2、分区3中均存储有100个数据,则需要读取分区1、分区2和分区3中的全部数据即300个数据。可以在每个分区中写入75个数据,以将该300个数据分别写入分区1、分区2、分区3、分区4和分区5中。其中,需要读取数据的分区包括分区1、分区2、分区3和分区4,需要读取的数据的数量为300个;需要写入数据的分区为分区1、分区2、分区3、分区4和分区5,需要写入的数据的数量为300个。
由图9A和图9B可知,本申请中只需要读取75个数据,对比相关技术中需要读取300个数据,大幅降低了待迁移数据的数量,且减少了需要写入数据的分区,即相关技术中需要写入数据的分区有5个,而本申请中需要写入数据的分区只有分区5,减少了增加分区时的操作,生成的日志文件减少,主备同步速度加快。
S706、在第一时段内,通过至少两个线程在第一分区表中对待迁移数据进行并行迁移处理,得到更新后的第一分区表。
由于待迁移数据为多个,则确定待迁移数据、以及待迁移数据的目标分区之后,则可以通过至少两个线程对待迁移数据进行并行迁移处理,得到更新后的第一分区表。
具体地,可以通过如下方式,对待迁移数据进行迁移:在第一分区表中创建隐藏的新增分区;确定第一分区表对应的原始元数据和新元数据;分别根据原始元数据和新元数据打开第一分区表,通过至少两个线程将第一分区表中待迁移数据迁移至目标分区;将第一分区表对应的原始元数据重命名为“备份元数据”,将新元数据重命名为“元数据”;删除“备份元数据”即原始元数据,保留“元数据”即新元数据。
其中,原始元数据是指更新前第一分区表对应的元数据;新元数据是指即将对第一分区表更新的元数据。
下面,结合图10,对并行迁移进行说明。
图10为本申请示例性实施例提供的一种并行迁移的示意图一。请参见图10,若第一分区表中包括分区1、分区2、分区3、分区4和分区5,分区5为新增的分区,则可以通过线程1读取分区1中的待迁移数据,将分区1中的待迁移数据迁移至分区5;并行地,可以通过线程2读取分区2中的待迁移数据,将分区2中的待迁移数据迁移至分区5;可以通过线程3读取分区3中的待迁移数据,将分区3中的待迁移数据迁移至分区5;可以通过线程4读取分区4中的待迁移数据,将分区4中的待迁移数据迁移至分区5。
下面,结合图11,对更新第一分区表进行说明。
图11为本申请示例性实施例提供的一种更新第一分区表的示意图一。请参见图11,包括第一分区表和更新后的第一分区表。
若在更新前,第一分区表中包括分区1、分区2和分区3,每个分区中存储有多个数据。确定第一分区表中待迁移数据、以及待迁移数据的目标分区,则可以对待迁移数据进行迁移。若第一分区表的目标分区数为4,则可以在第一分区表中建立隐藏的分区4。则可以确定第一分区表对应的原始元数据中包括3个分区,新元数据中包括4个分区。可以根据原始元数据打开第一分区表,读取第一分区表中的待迁移数据,并将待迁移数据迁移至按照新元数据打开的第一分区表中的目标分区。若待迁移数据为分区1中的4、分区2中的13、分区3中的15,以及对应的目标分区均为分区4,则可以通过至少两个线程,将分区1中的4、分区2中的13、分区3中的15迁移至分区4。如图8所示,更新后的第一分区表中可以包括4个分区,分别为分区1、分区2、分区3和分区4。
对待迁移数据迁移完成之后将第一分区表对应的原始元数据重命名为“备份元数据”,将新元数据重命名为“元数据”;删除“备份元数据”即原始元数据,保留“元数据”即新元数据,即可完成将第一分区表从3个分区更新为4个分区。
S707、确定在第一时段内对第一分区表的DML操作。
可选地,DML操作包括插入操作、更新操作和删除操作。
例如,若在第一时段内对第一分区表的DML操作1为在分区1中插入数据1,DML操作2为在分区1中更新数据2,DML操作3为在分区1中删除数据3,则数据库服务器可以确定在第一时段内对第一分区表的3个DML操作,即为DML操作1、DML操作2、DML操作3。
S708、在更新后的第一分区表中同步DML操作。
由于DML操作包括插入操作、更新操作和删除操作,则在更新后的第一分区表中同步DML操作,可以包括如下3种情况:
情况1:DML操作为插入操作。
在该种情况下,则可以确定插入操作对应的第一数据、以及第一数据在第一分区表中的原始插入分区;根据目标分区数,确定第一数据在第一分区表中的目标插入分区;若原始插入分区与目标插入分区不同,将第一数据插入至目标插入分区,在原始插入分区中删除第一数据,以及更新插入操作对应的操作日志。
例如,若在第一时段中,在第一分区表更新之前,对第一分区表进行的DML操作1为在分区1中插入数据1,则可以确定该DML操作1对应的第一数据为数据1、以及第一数据在第一分区表中的原始插入分区为分区1,对应的操作日志1为:在分区1中插入数据1。若第一分区表的目标分区数为5,假设根据目标分区数5,确定数据1在第一分区表中目标插入分区为分区2,则由于原始插入分区和目标插入分区不同,则在对第一分区表更新之后,可以将数据1插入至目标插入分区即分区2,在原始插入分区即分区1中删除数据1,并且可以更新该DML操作1对应的操作日志,即可以将操作日志1更新为:在分区2中插入数据1。
情况2:DML操作为删除操作。
在该种情况下,则可以确定删除操作对应的第二数据、以及第二数据在第一分区表中的原始删除分区;根据目标分区数,确定第二数据在第一分区表中的目标删除分区;若原始删除分区与目标删除分区不同,根据原始删除分区和目标删除分区,更新删除操作对应的操作日志。
例如,若在第一时段中,在第一分区表更新之前,对第一分区表进行的DML操作2为在分区1中删除数据2,则可以确定该DML操作2对应的第二数据为数据2、以及第二数据在第一分区表中的原始删除分区为分区1,对应的操作日志2为:在分区1中删除数据2。若第一分区表的目标分区数为5,假设根据目标分区数5,确定数据2在第一分区表中目标删除分区应为分区2,则由于已在原始删除分区即分区1中删除了数据2,则只需根据原始删除分区和目标删除分区,对操作日志2进行更新,即可以将操作日志2更新为:在分区2中删除数据2。
情况3:DML操作为更新操作。
在该种情况下,则可以确定更新操作对应的第三数据、以及第三数据在第一分区表中的原始更新分区;根据目标分区数,确定第三数据在第一分区表中的目标更新分区;若原始更新分区与目标更新分区不同,则将更新后的第三数据插入至目标更新分区,在原始更新分区中删除更新后的第一数据,以及更新更新操作对应的操作日志。
例如,若在第一时段中,在第一分区表更新之前,对第一分区表进行的DML操作3为在分区1中将数据1更新为0.5,则可以确定该DML操作3对应的第三数据为数据1、以及第三数据在第一分区表中的原始更新分区为分区1,对应的操作日志3为:在分区1中将数据1更新为0.5。若第一分区表的目标分区数为5,假设根据目标分区数5,确定第三数据在第一分区表中目标更新分区应为分区2,则由于在原始更新分区和目标更新分区不同,已在原始更新分区中即分区1中更新数据1为0.5,则可以将更新后的数据1即0.5插入目标更新分区即分区2,在原始更新分区即分区1中删除0.5。相应地,可以更新该DML操作3对应的操作日志3,即可以将操作日志3更新为:在分区2中将数据1更新为0.5。
在本申请实施例中,数据库服务器可以获取第一分区表的分区更新指令,并根据分区更新指令,在第一分区表对应的表定义缓存中获取第一分区表的类型。数据库服务器可以根据第一分区表的类型和分区更新指令,确定第一分区表的目标分区数。数据库服务器可以根据第一分区表中的数据和目标分区数,确定第一分区表中每个数据的迁移分区,并根据第一分区表中每个数据的迁移分区,在第一分区表中确定待迁移数据和待迁移数据的目标分区。数据库服务器可以在第一时段内,通过至少两个线程在第一分区表中对待迁移数据进行并行迁移处理,得到更新后的第一分区表,还可以确定在第一时段内对第一分区表的DML操作,并在更新后的第一分区表中同步DML操作。基于第一分区表为跳跃一致性哈希分区表,待迁移数据的数量可以小于第一分区表中数据的数量,降低了迁移的数据量;且可以通过至少两个线程对待迁移数据进行并行迁移处理,提高了迁移速度;且增加分区时的操作减少,生成的日志文件减少,主备同步速度加快,综合提高了迁移数据的效率。
图12为本申请示例性实施例提供的又一种数据处理方法的流程示意图。请参见图12,该方法可以包括:
S1201、获取第一分区表的分区更新指令。
可选地,数据库服务器可以执行计算机程序语句,以获取第一分区表的分区更新指令。该分区更新指令可以为分区删除指令。
例如,若计算机程序语句1为ALTER TABLE TEST COALESCE PARTITION 1,则数据库服务器可以执行该计算机程序语句1,以获取第一分区表的分区更新指令为分区删除指令,指示删除1个分区。
S1202、根据分区更新指令,在第一分区表对应的表定义缓存中获取第一分区表的类型。
需要说明的是,步骤S1202的执行过程可以参见步骤S702的执行过程,此处不再进行赘述。
S1203、根据第一分区表的类型和分区更新指令,确定第一分区表的目标分区数。
可选地,数据库服务器获取第一分区表的类型之后,则可以根据第一分区表的类型、分区更新指令确定第一分区表的目标分区数。
例如,若第一分区表的当前分区数为4,分区更新指令为分区删除指令,指示删除1个分区,则可以根据当前分区数4和分区更新指令,确定第一分区表的目标分区数为3。
例如,若分区更新指令为分区删除指令,指示第一分区表的目标分区数为3,则可以根据分区更新指令,确定第一分区表的目标分区数为3。
S1204、根据分区更新指令在第一分区表中确定待删除分区,将待删除分区中的数据确定为待迁移数据。
例如,若第一分区表的当前分区数为4,即第一分区表中包括4个分区,分别为分区1、分区2、分区3和分区4,若分区更新指令为分区删除指令,指示删除1个分区,则可以在第一分区表中确定待删除分区为分区4,并将分区4中的数据确定为待迁移数据。
可选地,待迁移数据的数量可以小于第一分区表中数据的数量。待迁移数据的数量与第一分区表中的当前数据的数量之比可以为N/(M+N)。其中,M可以为第一分区表中的当前分区数,N可以为对第一分区表新增的分区数。
例如,若第一分区表中的当前分区数M为3,对第一分区表删除的分区数N可以为1,则待迁移数据的数量与第一分区表中的当前数据的数量之比可以为1/3,即若第一分区表中的当前数据的数量为150,则待迁移数据的数量可以为50。
下面,结合图13A,对本申请中待迁移数据的数量进行说明;结合图13B,对相关技术中待迁移数据的数量进行说明。
图13A为本申请示例性实施例提供的待迁移数据的数量的示意图二。请参见图13A,
若第一分区表中包括分区1、分区2、分区3和分区4,若分区4为待删除的分区,若分区4中存储有120个数据,则可以将分区4中的120个数据确定为待迁移数据,则待迁移数据的数量为120。假设可以分别在分区1、分区2和分区3中写入40个数据,则可以读取分区4中的120个待迁移数据,将该120个待迁移数据分别写入分区1、分区2和分区3中。其中,读取数据分区包括分区4,读取的数据的数量为120个;需要写入数据的分区为分区1、分区2和分区3,写入的数据的数量为120个。
图13B为相关技术中待迁移数据的数量的示意图二。请参见图13B,若第一分区表中包括分区1、分区2、分区3和分区4,总共存储有420个数据。若分区4为待删除的分区,则需要读取分区1、分区2、分区3和分区4中的全部数据即420个数据。可以在分区1、分区2和分区3中分别写入140个数据,以将该420个数据分别写入分区1、分区2和分区3。其中,需要读取数据的分区包括分区1、分区2、分区3和分区4,需要读取的数据的数量为420个;需要写入数据的分区为分区1、分区2和分区3,需要写入的数据的数量为420个。
由图13A和图13B可知,本申请中只需要读取120个数据,对比相关技术中需要读取420个数据,大幅降低了待迁移数据的数量,且减少了需要读取数据的分区,即相关技术中需要读取数据的分区有4个,而本申请中需要读取数据的分区只有分区4,减少了删除分区时的操作,生成的日志文件减少,主备同步速度加快。
S1205、根据待迁移数据和目标分区数,确定待迁移数据的目标分区。
可选地,确定待迁移数据之后,则针对任意一个数据,可以通过跳跃一致性哈希算法对待迁移数据和目标分区数进行处理,得到分区标识,并将分区标识对应的分区,确定为待迁移数据的目标分区。
例如,若第一分区表的目标分区数为3,数据1为待迁移数据,则可以通过跳跃一致性哈希算法,对数据1和目标分区数3进行处理,得到分区标识为2,则可以将分区标识2对应的分区即分区2,确定为数据1对应的目标分区。
S1206、在第一时段内,通过至少两个线程在第一分区表中对待迁移数据进行并行迁移处理,得到更新后的第一分区表。
下面,结合图14,对并行迁移处理进行说明。
图14为本申请示例性实施例提供的一种并行迁移的示意图二。请参见图14,若第一分区表中包括分区1、分区2、分区3、分区4和分区5,分区4和分区5为待删除的分区,则可以通过线程1读取分区4中的数据,将分区4中的数据迁移至分区1、分区2和分区3;并行地,可以通过线程2读取分区5中的数据,将分区5中的数据迁移至分区1、分区2和分区3。
下面,结合图15,对更新分区表进行说明。
图15为本申请示例性实施例提供的一种更新第一分区表的示意图二。请参见图15,包括第一分区表和更新后的第一分区表。
若在更新前,第一分区表中包括分区1、分区2、分区3和分区4,每个分区中存储有多个数据。确定第一分区表中待迁移数据、以及待迁移数据的目标分区之后,则通过至少两个线程可以对待迁移数据进行迁移。若第一分区表的目标分区数为3,则可以读取分区4中的数据,将分区4中的数据迁移至分区1、分区2和分区3。例如,若在分区4中,4对应的目标分区为分区1、13对应的目标分区为分区2、15对应的目标分区为分区3,则可以通过至少两个线程,将4、13、15迁移至对应的目标分区,如图13所示。更新后的第一分区表中包括分区1、分区2和分区3,实现了在第一分区表中删除分区4。
S1207、确定在第一时段内对第一分区表的DML操作。
需要说明的是,步骤S1207的执行过程可以参见步骤S707的执行过程,此处不再进行赘述。
S1208、在更新后的第一分区表中同步DML操作。
需要说明的是,步骤S1208的执行过程可以参见步骤S708的执行过程,此处不再进行赘述。
在本申请实施例中,数据库服务器可以获取第一分区表的分区更新指令,并根据分区更新指令,在第一分区表对应的表定义缓存中获取第一分区表的类型。数据库服务器可以根据第一分区表的类型和分区更新指令,确定第一分区表的目标分区数。数据库服务器可以根据分区更新指令在第一分区表中确定待删除分区,将待删除分区中的数据确定为待迁移数据,并根据待迁移数据和目标分区数,确定待迁移数据的目标分区。数据库服务器可以在第一时段内,通过至少两个线程在第一分区表中对待迁移数据进行并行迁移处理,得到更新后的第一分区表,并确定在第一时段内对第一分区表的DML操作,在更新后的第一分区表中同步DML操作。基于第一分区表为跳跃一致性哈希分区表,待迁移数据的数量可以小于第一分区表中数据的数量,降低了迁移的数据量;且可以通过至少两个线程对待迁移数据进行并行迁移处理,提高了迁移速度;且删除分区时的操作减少,生成的日志文件减少,主备同步速度加快,综合提高了迁移数据的效率。
图16为本申请示例性实施例提供的一种数据表创建装置的结构示意图。请参见图16,该数据表创建装置10可以包括:第一获取模块11、创建模块12和生成模块13,其中,
所述第一获取模块11用于,获取第一分区表的创建指令,所述创建指令中包括注释信息,所述注释信息用于指示创建跳跃一致性哈希类型的分区表;
所述创建模块12用于,根据所述创建指令创建所述第一分区表、以及生成落盘信息,所述落盘信息中包括所述注释信息;;
所述生成模块13用于,根据所述落盘信息生成所述第一分区表对应的表定义缓存,所述表定义缓存包括:所述第一分区表的类型为跳跃一致性哈希类型。
本申请实施例提供的数据表创建装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述生成模块13具体用于:
根据所述落盘信息,确定所述第一分区表的类型为所述跳跃一致性哈希类型;
根据所述第一分区表的类型,生成所述表定义缓存。
本申请实施例提供的数据表创建装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
图17为本申请示例性实施例提供的另一种数据表创建装置的结构示意图。请参见图17,在图16所示实施例的基础上,所述数据表创建装置10还可以包括第二获取模块14和操作模块15,其中,
所述第一获取模块11用于,获取所述第一分区表的操作指令;
所述第二获取模块14用于,根据所述操作指令,在所述第一分区表对应的所述表定义缓存中获取所述第一分区表的类型;
所述操作模块15用于,根据所述第一分区表的类型和所述操作指令,对所述第一分区表进行操作处理。
本申请实施例提供的数据表创建装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
在一种可能的实施方式中,所述操作指令为分区表更新指令,所述分区更新指令为分区增加指令或者分区删除指令;所述操作模块15具体用于:
根据所述第一分区表的类型和所述分区更新指令,确定所述第一分区表的目标分区数;
根据所述分区更新指令和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区,所述待迁移数据的数量小于所述第一分区表中数据的数量;
将所述待迁移数据迁移至对应的目标分区。
在一种可能的实施方式中,所述操作模块15具体用于:
若所述分区更新指令为分区增加指令,则根据所述第一分区表的数据和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区;
若所述分区更新指令为分区删除指令,则根据所述分区删除指令在所述第一分区表中确定待删除分区,将所述待删除分区中的数据确定为所述待迁移数据,并根据所述待迁移数据和所述目标分区数,确定所述待迁移数据的目标分区。
在一种可能的实施方式中,所述操作模块15具体用于:
根据所述第一分区表中的数据和所述目标分区数,确定所述第一分区表中每个数据的迁移分区,所述迁移分区为所述数据当前所在的分区或者新增的分区;
根据所述第一分区表中每个数据的迁移分区,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区。
在一种可能的实施方式中,所述操作模块15具体用于:
针对所述第一分区表中的任意一个数据,若所述数据的迁移分区为所述新增的分区,则将所述数据确定为所述待迁移数据,以及将所述数据的迁移分区确定为所述待迁移数据的目标分区。
在一种可能的实施方式中,针对所述第一分区表中的任意一个数据;所述操作模块15具体用于:
根据所述数据和原始种子,生成所述数据对应的伪随机数;
将新增的分区数和所述目标分区数的比值,确定为对比值;
若所述伪随机数大于或等于所述对比值,则确定所述数据的迁移分区为所述数据当前所在的分区;
若所述伪随机数小于所述对比值,则确定所述数据的迁移分区为所述新增的分区。
在一种可能的实施方式中,所述操作模块15具体用于:
通过跳跃一致性哈希算法,对所述待迁移数据和所述目标分区数进行处理,得到分区标识;
将所述分区标识对应的分区,确定为所述待迁移数据的目标分区。
在一种可能的实施方式中,所述操作模块15具体用于:
在第一时段内,通过至少两个线程在所述第一分区表中对所述待迁移数据进行并行迁移处理,得到更新后的第一分区表;
确定在所述第一时段内对所述第一分区表的数据操纵语言DML操作,所述DML操作包括插入操作、更新操作和删除操作;
在所述更新后的第一分区表中同步所述DML操作。
在一种可能的实施方式中,所述DML操作为插入操作;所述操作模块15具体用于:
确定所述插入操作对应的第一数据、以及所述第一数据在所述第一分区表中的原始插入分区;
根据所述目标分区数,确定所述第一数据在所述第一分区表中的目标插入分区;
若所述原始插入分区与所述目标插入分区不同,将所述第一数据插入至所述目标插入分区,在所述原始插入分区中删除所述第一数据,以及更新所述插入操作对应的操作日志。
在一种可能的实施方式中,所述DML操作为删除操作;所述操作模块15具体用于:
确定所述删除操作对应的第二数据、以及所述第二数据在所述第一分区表中的原始删除分区;
根据所述目标分区数,确定所述第二数据在所述第一分区表中的目标删除分区;
若所述原始删除分区与所述目标删除分区不同,根据所述原始删除分区和所述目标删除分区,更新所述删除操作对应的操作日志。
在一种可能的实施方式中,所述DML操作为更新操作;所述操作模块15具体用于:
确定所述更新操作对应的第三数据、以及所述第三数据在所述第一分区表中的原始更新分区;
根据所述目标分区数,确定所述第三数据在所述第一分区表中的目标更新分区;
若所述原始更新分区与所述目标更新分区不同,则将更新后的第三数据插入至所述目标更新分区,在所述原始更新分区中删除更新后的第一数据,以及更新所述更新操作对应的操作日志。
在一种可能的实施方式中,所述待迁移数据的数量与所述第一分区表中的当前数据的数量之比为N/(M+N);
其中,所述M为所述第一分区表中的当前分区数,所述N为对所述第一分区表新增或者删除的分区数。
本申请实施例提供的数据表创建装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
本申请示例性实施例提供一种数据库服务器的结构示意图,请参见图18,该数据库服务器20可以包括处理器21和存储器22。示例性地,处理器21、存储器22,各部分之间通过总线23相互连接。
所述存储器22存储计算机执行指令;
所述处理器21执行所述存储器22存储的计算机执行指令,使得所述处理器21执行如上述方法实施例所示的数据表创建方法。
相应地,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时用于实现上述方法实施例所述的数据表创建方法。
相应地,本申请实施例还可提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,可实现上述方法实施例所示的数据表创建方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (16)

1.一种数据表创建方法,其特征在于,包括:
获取第一分区表的创建指令,所述创建指令中包括注释信息,所述注释信息用于指示创建跳跃一致性哈希类型的分区表;
根据所述创建指令创建所述第一分区表、以及生成落盘信息,所述落盘信息中包括所述注释信息;
根据所述落盘信息生成所述第一分区表对应的表定义缓存,所述表定义缓存包括:所述第一分区表的类型为跳跃一致性哈希类型。
2.根据权利要求1所述的方法,其特征在于,根据所述落盘信息生成所述第一分区表对应的表定义缓存,包括:
根据所述落盘信息,确定所述第一分区表的类型为所述跳跃一致性哈希类型;
根据所述第一分区表的类型,生成所述表定义缓存。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
获取所述第一分区表的操作指令;
根据所述操作指令,在所述第一分区表对应的所述表定义缓存中获取所述第一分区表的类型;
根据所述第一分区表的类型和所述操作指令,对所述第一分区表进行操作处理。
4.根据权利要求3所述的方法,其特征在于,所述操作指令为分区表更新指令,所述分区更新指令为分区增加指令或者分区删除指令;
根据所述第一分区表的类型和所述操作指令,对所述第一分区表进行操作处理,包括:
根据所述第一分区表的类型和所述分区更新指令,确定所述第一分区表的目标分区数;
根据所述分区更新指令和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区,所述待迁移数据的数量小于所述第一分区表中数据的数量;
将所述待迁移数据迁移至对应的目标分区。
5.根据权利要求4所述的方法,其特征在于,根据所述分区更新指令和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区,包括:
若所述分区更新指令为分区增加指令,则根据所述第一分区表的数据和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区;
若所述分区更新指令为分区删除指令,则根据所述分区删除指令在所述第一分区表中确定待删除分区,将所述待删除分区中的数据确定为所述待迁移数据,并根据所述待迁移数据和所述目标分区数,确定所述待迁移数据的目标分区。
6.根据权利要求5所述的方法,其特征在于,根据所述第一分区表的数据和所述目标分区数,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区,包括:
根据所述第一分区表中的数据和所述目标分区数,确定所述第一分区表中每个数据的迁移分区,所述迁移分区为所述数据当前所在的分区或者新增的分区;
根据所述第一分区表中每个数据的迁移分区,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区。
7.根据权利要求6所述的方法,其特征在于,根据所述第一分区表中每个数据的迁移分区,在所述第一分区表中确定待迁移数据和所述待迁移数据的目标分区,包括:
针对所述第一分区表中的任意一个数据,若所述数据的迁移分区为所述新增的分区,则将所述数据确定为所述待迁移数据,以及将所述数据的迁移分区确定为所述待迁移数据的目标分区。
8.根据权利要求6或7所述的方法,其特征在于,针对所述第一分区表中的任意一个数据;根据所述数据和所述目标分区数,确定所述数据的迁移分区,包括:
根据所述数据和原始种子,生成所述数据对应的伪随机数;
将新增的分区数和所述目标分区数的比值,确定为对比值;
若所述伪随机数大于或等于所述对比值,则确定所述数据的迁移分区为所述数据当前所在的分区;
若所述伪随机数小于所述对比值,则确定所述数据的迁移分区为所述新增的分区。
9.根据权利要求5所述的方法,其特征在于,根据所述待迁移数据和所述目标分区数,确定所述待迁移数据的目标分区,包括:
通过跳跃一致性哈希算法,对所述待迁移数据和所述目标分区数进行处理,得到分区标识;
将所述分区标识对应的分区,确定为所述待迁移数据的目标分区。
10.根据权利要求4-9任一项所述的方法,其特征在于,将所述待迁移数据迁移至对应的目标分区,包括:
在第一时段内,通过至少两个线程在所述第一分区表中对所述待迁移数据进行并行迁移处理,得到更新后的第一分区表;
确定在所述第一时段内对所述第一分区表的数据操纵语言DML操作,所述DML操作包括插入操作、更新操作和删除操作;
在所述更新后的第一分区表中同步所述DML操作。
11.根据权利要求10所述的方法,其特征在于,所述DML操作为插入操作;在所述更新后的第一分区表中同步所述DML操作,包括:
确定所述插入操作对应的第一数据、以及所述第一数据在所述第一分区表中的原始插入分区;
根据所述目标分区数,确定所述第一数据在所述第一分区表中的目标插入分区;
若所述原始插入分区与所述目标插入分区不同,将所述第一数据插入至所述目标插入分区,在所述原始插入分区中删除所述第一数据,以及更新所述插入操作对应的操作日志。
12.根据权利要求10所述的方法,其特征在于,所述DML操作为删除操作;在所述更新后的第一分区表中同步所述DML操作,包括:
确定所述删除操作对应的第二数据、以及所述第二数据在所述第一分区表中的原始删除分区;
根据所述目标分区数,确定所述第二数据在所述第一分区表中的目标删除分区;
若所述原始删除分区与所述目标删除分区不同,根据所述原始删除分区和所述目标删除分区,更新所述删除操作对应的操作日志。
13.根据权利要求10所述的方法,其特征在于,所述DML操作为更新操作;在所述更新后的第一分区表中同步所述DML操作,包括:
确定所述更新操作对应的第三数据、以及所述第三数据在所述第一分区表中的原始更新分区;
根据所述目标分区数,确定所述第三数据在所述第一分区表中的目标更新分区;
若所述原始更新分区与所述目标更新分区不同,则将更新后的第三数据插入至所述目标更新分区,在所述原始更新分区中删除更新后的第一数据,以及更新所述更新操作对应的操作日志。
14.根据权利要求4-13任一项所述的方法,其特征在于,所述待迁移数据的数量与所述第一分区表中的当前数据的数量之比为N/(M+N);
其中,所述M为所述第一分区表中的当前分区数,所述N为对所述第一分区表新增或者删除的分区数。
15.一种数据库服务器,其特征在于,包括:存储器和处理器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如权利要求1至14任一项所述的数据表创建方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时用于实现权利要求1至14任一项所述的数据表创建方法。
CN202310210854.1A 2023-02-28 2023-02-28 数据表创建方法及设备 Pending CN116431601A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310210854.1A CN116431601A (zh) 2023-02-28 2023-02-28 数据表创建方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310210854.1A CN116431601A (zh) 2023-02-28 2023-02-28 数据表创建方法及设备

Publications (1)

Publication Number Publication Date
CN116431601A true CN116431601A (zh) 2023-07-14

Family

ID=87082321

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310210854.1A Pending CN116431601A (zh) 2023-02-28 2023-02-28 数据表创建方法及设备

Country Status (1)

Country Link
CN (1) CN116431601A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116841835A (zh) * 2023-08-31 2023-10-03 安擎计算机信息股份有限公司 一种运行状态监测方法、装置和服务器

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116841835A (zh) * 2023-08-31 2023-10-03 安擎计算机信息股份有限公司 一种运行状态监测方法、装置和服务器
CN116841835B (zh) * 2023-08-31 2023-11-07 安擎计算机信息股份有限公司 一种运行状态监测方法、装置和服务器

Similar Documents

Publication Publication Date Title
CN111444196B (zh) 块链式账本中全局状态的哈希的生成方法、装置及设备
CN106815275B (zh) 一种通过备用数据库实现主备数据库同步的方法与设备
CN106933823B (zh) 数据同步方法及装置
US20220404990A1 (en) Management method and system for address space of low delay file system and medium
CN111444192B (zh) 块链式账本中全局状态的哈希的生成方法、装置及设备
CN107665219B (zh) 一种日志管理方法及装置
CN107391544B (zh) 列式存储数据的处理方法、装置、设备及计算机储存介质
CN107590207A (zh) 数据同步方法及装置、电子设备
CN110019111B (zh) 数据处理方法、装置、存储介质以及处理器
CN116431601A (zh) 数据表创建方法及设备
CN107544859A (zh) 在混合内存系统上用来保证数据一致性的检查点方法
CN109460406A (zh) 一种数据处理方法及装置
CN108073595B (zh) 一种在olap数据库实现数据更新和快照的方法及装置
CN112965939A (zh) 一种文件合并方法、装置和设备
US10776334B2 (en) Random walking and cluster-based random walking method, apparatus and device
KR20120082176A (ko) 데이터베이스 관리 시스템의 데이터 처리 방법 및 시스템
CN111522827B (zh) 一种数据更新方法、装置和电子设备
US20240028560A1 (en) Directory management method and system for file system based on cuckoo hash and storage medium
CN114816247A (zh) 一种逻辑数据获取方法及装置
CN110045962B (zh) 一种支持多语言脚本执行的方法和装置
CN109582938B (zh) 报表生成方法和装置
CN111666267A (zh) 一种数据清洗方法、装置及终端设备
CN114969200B (zh) 数据同步方法、装置、电子设备及存储介质
CN106155837B (zh) 一种主备库数据修复的方法以及装置
CN116166636A (zh) 数据迁移方法、装置、设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination