变更表格式的方法、装置、电子设备和可读存储介质制造方法及图纸

技术编号:19023469 阅读:25 留言:0更新日期:2018-09-26 19:04
本发明专利技术实施例提供了一种变更表格式的方法、装置、电子设备和可读存储介质,方法包括:创建一张原表格式的修改记录表,以及一张对原表进行表格式变更后的临时表;在插入有修改触发器对应的原表中的数据被修改,并触发修改触发器后,在修改记录表中记录原表的修改信息;将修改后的原表中的所有数据写入临时表;根据修改记录表中记录的修改信息,对临时表中的数据进行第一修改操作;使用修改后的临时表置换修改后的原表,并删除修改后的原表。应用本发明专利技术实施例能够实现在变更表格式的过程中,不锁定原表,以避免影响其他业务的正常运行。

【技术实现步骤摘要】
变更表格式的方法、装置、电子设备和可读存储介质
本专利技术涉及数据库
,特别是涉及变更表格式的方法、装置、电子设备和可读存储介质。
技术介绍
目前,在需要对数据库进行表格式变更时,应用较为广泛的方法是pt-online-schema-change方法,具体的处理过程如下:第一步,按照用户所需的新表格式,创建一张临时表;第二步,向待变更表格式的原表中,插入修改触发器,修改触发器可以包括插入(insert)触发器、更改(update)触发器和删除(delete)触发器;第三步,当用户对原表中的数据进行变更操作时,通过触发修改触发器直接向临时表修改数据;比如,用户对原表进行update操作,通过触发update触发器直接对临时表进行update操作,此时原表被锁定,导致除该用户以外的其他业务进程无法再对原表进行操作;第四步,将修改后的原表的所有数据写入到修改后的临时表中;第五步,使用修改后的临时表置换修改后的原表;具体的,先将原表的表名修改为区分于原表名,且与原表名不同的随机名,将临时表的表名改为原表的表名,再解锁定原表;第六步,删除原表。但是,由于在第三步中,通过触发变更触发器直接向临时表修改数据可能会触发锁定原表,导致用户在对数据库中的原表进行表格式变更时,其他业务进程无法对原表进行操作,在锁定时间较长的情况下会影响其他业务的正常使用。
技术实现思路
本专利技术实施例的目的在于提供一种变更表格式的方法、装置、电子设备和可读存储介质,以实现在变更表格式的过程中,不锁定原表,以避免影响其他业务的正常运行。具体技术方案如下:本专利技术实施例提供一种变更表格式的方法,方法包括:创建一张原表格式的修改记录表,以及一张对原表进行表格式变更后的临时表;在插入有修改触发器对应的原表中的数据被修改,并触发修改触发器后,在修改记录表中记录原表的修改信息;将修改后的原表中的所有数据写入临时表;根据修改记录表中记录的修改信息,对临时表中的数据进行第一修改操作;使用修改后的临时表置换修改后的原表,并删除修改后的原表。可选的,修改记录表包括用于记录插入信息、更改信息和删除信息的字段;在修改记录表中记录原表的修改信息的步骤,包括:修改触发器在修改记录表中对应的字段中,插入原表中修改后的数据和修改后的数据对应的修改类型,修改类型包括插入、更改和删除;根据修改记录表中记录的修改信息,对临时表中的数据进行第一修改操作的步骤,包括:根据修改记录表中记录的修改后的数据和修改后的数据对应的修改类型,对临时表中的数据进行相应的修改操作。可选的,在使用修改后的临时表置换修改后的原表的步骤之前,方法还包括:使用预设的校验函数,对修改后的原表中的数据以及修改后的临时表中的数据进行一致性校验;当修改后的原表中的数据与修改后的临时表中的数据不一致时,返回执行根据修改记录表中记录的修改信息,对临时表中的数据进行第一修改操作的步骤;当修改后的原表中的数据与修改后的临时表中的数据一致时,执行使用修改后的临时表置换修改后的原表的步骤。可选的,使用预设的校验函数,对修改后的原表中的数据以及修改后的临时表中的数据进行一致性校验的步骤,包括:使用预设的校验函数,通过计算修改后的原表中每个数据行对应的第一校验值,以及修改后的临时表中的每个数据行对应的第二校验值,对修改后的原表中每个数据行以及修改后的临时表中的每个数据行进行一致性校验;当修改后的原表中的数据与修改后的临时表中的数据不一致时,返回执行根据修改记录表中记录的修改信息,对临时表中的数据进行第一修改操作的步骤,包括:当修改后的原表中的数据与修改后的临时表中的数据不一致时,根据修改记录表中记录的修改信息,对临时表中的数据进行第二修改操作;根据修改后的原表中每个数据行对应的第一校验值,以及修改后的临时表中的每个数据行对应的第二校验值,确定错误行,其中,当修改后的原表中第一数据行对应的第一校验值,与变更后的临时表中、与第一数据行处于同一行的第二数据行对应的第二校验值不一致时,第一数据行和第二数据行均为错误行;使用校验函数,对错误行进行一致性校验;当错误行中的数据不一致时,返回执行根据修改记录表中记录的修改信息,对临时表中的数据进行第二修改操作的步骤。可选的,在使用校验函数,对错误行进行一致性校验的步骤之后,方法还包括:获取对错误行进行一致性校验的处理过程所耗费的时长;当修改后的原表中的数据与修改后的临时表中的数据一致时,执行使用修改后的临时表置换修改后的原表的步骤,包括:当错误行中的数据一致,且使用时长小于预设时长阈值时,执行使用修改后的临时表置换修改后的原表的步骤。可选的,当错误行中的数据不一致时,返回执行根据修改记录表中记录的修改信息,对临时表中的数据进行第二修改操作的步骤,包括:当错误行中的数据不一致,或者,时长大于或等于预设时长阈值时,返回执行根据修改记录表中记录的修改信息,对临时表中的数据进行第二修改操作的步骤。可选的,在执行使用修改后的临时表置换修改后的原表的步骤之前,方法还包括:根据变化记录表中记录的修改信息,对修改后的临时表中的数据进行第一修改操作;使用预设的校验函数,对修改后的原表中的数据以及修改后的临时表中的数据进行一致性校验;当修改后的原表中的数据与修改后的临时表中的数据一致时,执行使用修改后的临时表置换修改后的原表的步骤。本专利技术实施例还提供一种变更表格式的装置,装置包括:创建单元,用于创建一张原表格式的修改记录表,以及一张对原表进行表格式变更后的临时表;记录单元,用于在插入有修改触发器对应的原表中的数据被修改,并触发修改触发器后,在修改记录表中记录原表的修改信息;写入单元,用于将修改后的原表中的所有数据写入临时表;第一修改单元,用于根据修改记录表中记录的修改信息,对临时表中的数据进行第一修改操作;置换单元,用于使用修改后的临时表置换修改后的原表,并删除修改后的原表。可选的,修改记录表包括用于记录插入信息、更改信息和删除信息的字段;记录单元,具体用于修改触发器在修改记录表中对应的字段中,插入原表中修改后的数据和修改后的数据对应的修改类型,修改类型包括插入、更改和删除;第一修改单元,具体用于根据修改记录表中记录的修改后的数据和修改后的数据对应的修改类型,对临时表中的数据进行相应的修改操作。可选的,装置还包括:第一校验单元,用于使用预设的校验函数,对修改后的原表中的数据以及修改后的临时表中的数据进行一致性校验;第一执行单元,用于当校验单元的校验结果为修改后的原表中的数据与修改后的临时表中的数据不一致时,返回执行第一修改单元;第二执行单元,用于当校验单元的校验结果为修改后的原表中的数据与修改后的临时表中的数据一致时,执行置换单元。可选的,第一校验单元,具体用于使用预设的校验函数,通过计算修改后的原表中每个数据行对应的第一校验值,以及修改后的临时表中的每个数据行对应的第二校验值,对修改后的原表中每个数据行以及修改后的临时表中的每个数据行进行一致性校验;第一执行单元,包括:修改子单元、确定子单元、校验子单元和执行子单元;修改子单元,用于当修改后的原表中的数据与修改后的临时表中的数据不一致时,根据修改记录表中记录的修改信息,对临时表中的数据进行第二修改操作;确定子单元,用于根据修改后的原表中每个数据行对应的本文档来自技高网...

【技术保护点】
1.一种变更表格式的方法,其特征在于,所述方法包括:创建一张原表格式的修改记录表,以及一张对所述原表进行表格式变更后的临时表;在插入有修改触发器对应的原表中的数据被修改,并触发所述修改触发器后,在所述修改记录表中记录所述原表的修改信息;将修改后的原表中的所有数据写入所述临时表;根据所述修改记录表中记录的所述修改信息,对所述临时表中的数据进行第一修改操作;使用修改后的临时表置换所述修改后的原表,并删除所述修改后的原表。

【技术特征摘要】
1.一种变更表格式的方法,其特征在于,所述方法包括:创建一张原表格式的修改记录表,以及一张对所述原表进行表格式变更后的临时表;在插入有修改触发器对应的原表中的数据被修改,并触发所述修改触发器后,在所述修改记录表中记录所述原表的修改信息;将修改后的原表中的所有数据写入所述临时表;根据所述修改记录表中记录的所述修改信息,对所述临时表中的数据进行第一修改操作;使用修改后的临时表置换所述修改后的原表,并删除所述修改后的原表。2.根据权利要求1所述的方法,其特征在于,所述修改记录表包括用于记录插入信息、更改信息和删除信息的字段;所述在所述修改记录表中记录所述原表的修改信息的步骤,包括:所述修改触发器在所述修改记录表中对应的字段中,插入所述原表中修改后的数据和所述修改后的数据对应的修改类型,所述修改类型包括插入、更改和删除;所述根据所述修改记录表中记录的所述修改信息,对所述临时表中的数据进行第一修改操作的步骤,包括:根据所述修改记录表中记录的所述修改后的数据和所述修改后的数据对应的修改类型,对所述临时表中的数据进行相应的修改操作。3.根据权利要求1所述的方法,其特征在于,在所述使用修改后的临时表置换所述修改后的原表的步骤之前,所述方法还包括:使用预设的校验函数,对所述修改后的原表中的数据以及修改后的临时表中的数据进行一致性校验;当所述修改后的原表中的数据与所述修改后的临时表中的数据不一致时,返回执行所述根据所述修改记录表中记录的所述修改信息,对所述临时表中的数据进行第一修改操作的步骤;当所述修改后的原表中的数据与所述修改后的临时表中的数据一致时,执行所述使用修改后的临时表置换所述修改后的原表的步骤。4.根据权利要求3所述的方法,其特征在于,所述使用预设的校验函数,对所述修改后的原表中的数据以及修改后的临时表中的数据进行一致性校验的步骤,包括:使用预设的校验函数,通过计算所述修改后的原表中每个数据行对应的第一校验值,以及修改后的临时表中的每个数据行对应的第二校验值,对所述修改后的原表中每个数据行以及修改后的临时表中的每个数据行进行一致性校验;所述当所述修改后的原表中的数据与所述修改后的临时表中的数据不一致时,返回执行所述根据所述修改记录表中记录的所述修改信息,对所述临时表中的数据进行第一修改操作的步骤,包括:当所述修改后的原表中的数据与所述修改后的临时表中的数据不一致时,根据所述修改记录表中记录的所述修改信息,对所述临时表中的数据进行第二修改操作;根据所述修改后的原表中每个数据行对应的第一校验值,以及所述修改后的临时表中的每个数据行对应的第二校验值,确定错误行,其中,当所述修改后的原表中第一数据行对应的第一校验值,与所述变更后的临时表中、与所述第一数据行处于同一行的第二数据行对应的第二校验值不一致时,所述第一数据行和所述第二数据行均为所述错误行;使用所述校验函数,对所述错误行进行一致性校验;当所述错误行中的数据不一致时,返回执行所述根据所述修改记录表中记录的所述修改信息,对所述临时表中的数据进行第二修改操作的步骤。5.根据权利要求4所述的方法,其特征在于,在所述使用所述校验函数,对所述错误行进行一致性校验的步骤之后,所述方法还包括:获取所述对所述错误行进行一致性校验的处理过程所耗费的时长;所述当所述修改后的原表中的数据与所述修改后的临时表中的数据一致时,执行所述使用修改后的临时表置换所述修改后的原表的步骤,包括:当所述错误行中的数据一致,且使用所述时长小于预设时长阈值时,执行所述使用修改后的临时表置换所述修改后的原表的步骤。6.根据权利要求5所述的方法,其特征在于,所述当所述错误行中的数据不一致时,返回执行所述根据所述修改记录表中记录的所述修改信息,对所述临时表中的数据进行第二修改操作的步骤,包括:当所述错误行中的数据不一致,或者,所述时长大于或等于预设时长阈值时,返回执行所述根据所述修改记录表中记录的所述修改信息,对所述临时表中的数据进行第二修改操作的步骤。7.根据权利要求3所述的方法,其特征在于,在所述执行所述使用修改后的临时表置换所述修改后的原表的步骤之前,所述方法还包括:根据所述变化记录表中记录的所述修改信息,对所述修改后的临时表中的数据进行第一修改操作;使用预设的校验函数,对所述修改...

【专利技术属性】
技术研发人员:纪翔
申请(专利权)人:北京金山云网络技术有限公司北京金山云科技有限公司北京金迅瑞博网络技术有限公司
类型:发明
国别省市:北京,11

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

1