CN116089394A - 数据库的数据回滚方法、存储介质与设备 - Google Patents
数据库的数据回滚方法、存储介质与设备 Download PDFInfo
- Publication number
- CN116089394A CN116089394A CN202211666734.4A CN202211666734A CN116089394A CN 116089394 A CN116089394 A CN 116089394A CN 202211666734 A CN202211666734 A CN 202211666734A CN 116089394 A CN116089394 A CN 116089394A
- Authority
- CN
- China
- Prior art keywords
- data
- tuple
- operated
- database
- rollback
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000003860 storage Methods 0.000 title claims abstract description 19
- 230000008569 process Effects 0.000 claims abstract description 15
- 238000005096 rolling process Methods 0.000 claims description 14
- 230000001960 triggered effect Effects 0.000 claims description 14
- 230000007246 mechanism Effects 0.000 abstract description 5
- 238000012986 modification Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 13
- 238000012217 deletion Methods 0.000 description 7
- 230000037430 deletion Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000011065 in-situ storage Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011109 contamination Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000003449 preventive effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据库的数据回滚方法、存储介质与设备。其中数据库的数据回滚方法包括:启动批量数据操作;读取批量数据操作中一条被操作元组,并记录预写日志的位置,作为操作起始位置;执行对被操作元组的操作,并在执行过程中进行预写日志的记录;获取被操作元组的操作结果;在被操作元组的操作结果指示失败的情况下,以操作起始位置为起点搜索预写日志中被操作元组对应事务的条目,以确定错误操作;对错误操作进行回滚,并在回滚完成后读取批量数据操作的下一条被操作元组。本发明的方案,不依赖回滚段完成错误数据的查找,定位、回滚,且回滚不需要中断整个批量操作,从而提升了数据库系统的容错机制。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种数据库的数据回滚方法、存储介质与设备。
背景技术
现有数据库管理系统中会通过批量更改提升性能。这些批量更改包括:批量的插入(insert),批量的删除(delete),批量的修改(update)以及批量加载。但是数据库表上的约束或者触发器有可能中断批量操作,导致整个事务回滚。在这种情况下,已经写入的数据就会被丢弃,这会导致存储空间、读写资源的浪费以及数据库的实际体验的下降。即使少量的数据错误也会导致整个批处理任务失败。
针对上述问题,数据库系统会建立适当的容错机制。容错机制分为两类:第一类属于预防性质,比如存在主键冲突的情况下通过更新的方式替代原有的插入方式。第二类属于忽略性质,当出现错误的情况下跳过这个错误的操作以及该错误行触发的相关修改,继续进行其后的修改。对于第二类容错机制,要求数据库拥有回滚日志或者撤销日志(undo日志),需要在写入数据前把被修改或者插入的数据写入到日志中,在遇到错误的时候通过其回滚错误行数据。
然而上述回滚的方案有几个弊端:(1)需要引入额外日志,undo日志需包含写入的数据,尤其是对于更新和删除等操作,额外的写入势必会增加额外的IO(输入输出)。(2)回滚的耗时较长,长事务的写入操作在回滚过程中由于要处理多组undo日志,进而导致回滚时间较长。(3)大多数回滚段都是要单独维护,由于额外的维护会遇到回滚段溢出,导致回滚失败的现象。
然而如果没有回滚段,对于这种批量修改过程中出现错误操作的时候,如何单独回滚错误的数据,保留正确的数据则是一个困难的问题。特别是当被修改的表上建有触发器,而触发器中又含有更多其它表的修改操作的时候,往往很难定位这些被修改的数据,也就更难于执行回滚了。
发明内容
本发明的一个目的是要提供一种能够解决上述任一问题的数据库的数据回滚方法、存储介质与设备。
本发明一个进一步的目的是要不引入回滚段的情况下通过解析预写日志(Write-Ahead Logging,简称WAL)实现错误操作的回滚。
本发明另一进一步的目的是要对相关关联操作一并回滚,避免数据库污染。
本发明另一进一步的目的是要批量数据操作过程中不中断整个操作过程,提升数据库系统的容错机制。
特别地,本发明提供了一种数据库的数据回滚方法,包括:
启动批量数据操作;
读取批量数据操作中一条被操作元组,并记录预写日志的位置,作为操作起始位置;
执行对被操作元组的操作,并在执行过程中进行预写日志的记录;
获取被操作元组的操作结果;
在被操作元组的操作结果指示失败的情况下,以操作起始位置为起点搜索预写日志中被操作元组对应事务的条目,以确定错误操作;
对错误操作进行回滚,并在回滚完成后读取批量数据操作的下一条被操作元组。
可选地,执行对被操作元组的操作的步骤包括:确定数据库被操作的目标表,在目标表上进行被操作元组的操作,判断被操作元组的操作是否触发关联操作,若是,则执行关联操作,并且被操作元组的操作结果还包括关联操作的操作结果。
可选地,关联操作包括:由被操作元组的操作触发的目标表索引操作,并且对错误操作进行回滚的步骤还包括:回滚目标表索引操作,以将索引恢复至被操作元组的操作触发索引操作之前的状态。
可选地,关联操作包括由被操作元组的操作触发的目标表中触发器的操作,并且对错误操作进行回滚的步骤还包括:回滚触发器的操作,以将数据库恢复至触发器被触发之前的状态。
可选地,被操作元组的操作包括数据写入操作,并且
对错误操作进行回滚的步骤包括:从预写日志中获取数据写入位置;按照数据写入位置将对应数据标识为无效。
可选地,被操作元组的操作包括数据删除操作和/或数据变更操作;
对错误操作进行回滚的步骤包括:从预写日志中获取操作前的数据信息,并恢复至数据删除操作和/或数据变更操作执行之前的状态。
可选地,在被操作元组的操作结果指示成功的情况下,还包括:读取批量数据操作的另一条被操作元组,并记录预写日志的位置。
可选地,被操作元组包括数据元组和/或数据库系统的元数据元组。
根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现根据上述任一项数据库的数据回滚方法。
根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并处理器执行机器可执行程序时实现根据上述任一项数据库的数据回滚方法。
本发明的数据库的数据回滚方法,针对批量数据操作中的每一条被操作元组,记录WAL的相应位置,在被操作元组的操作失败的情况下,利用WAL搜索得出该条被操作元组的错误操作,从而根据WAL确定出错误操作进行回滚,回滚完成后继续完成批量操作。回滚过程不需要回滚段,对于整个批量操作而言,相当于跳过忽略了失败的被操作元组,不需要中断整个批量操作,提高了数据库的处理效率。
进一步地,本发明的数据库的数据回滚方法,通过分析预写日志的信息,进行错误数据回滚,实现原地修改,不需要进行额外空间的分配。
更进一步地,本发明的数据库的数据回滚方法,除了被操作元组本身操作的错误之外,还可以针对触发器、索引等关联操作进行分析和回滚,避免了对数据库其他数据的影响。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是根据本发明一个实施例的数据库的数据回滚方法的示意性流程图;
图2是根据本发明一个实施例的数据库的数据回滚方法的进行数据操作的流程图;
图3是根据本发明一个实施例的机器可读存储介质的示意图;以及
图4是根据本发明一个实施例的计算机设备的示意图。
具体实施方式
本领域技术人员应当理解的是,下文所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,该一部分实施例旨在用于解释本发明的技术原理,并非用于限制本发明的保护范围。基于本发明提供的实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本发明的保护范围之内。
图1是根据本发明一个实施例的数据库的数据回滚方法的示意性流程图。该数据库的数据回滚方法一般性地可以包括:
步骤S102,启动批量数据操作。批量数据操作可以包括数据写入(或称为插入、创建,INSERT)、数据删除(DELETE)、数据更新(UPDATE)等一系列操作。批量数据操作的数据库的目标表可以数据元组和/或数据库系统的元数据元组。也即上述批量数据操作可以针对数据库的数据表,也可以针对数据库的系统表。
步骤S104,读取批量数据操作中一条被操作元组,并记录预写日志(WAL)的位置,作为操作起始位置。被操作元组可为一行数据。WAL是关系数据库系统中用于提供原子性和持久性的日志技术。在使用WAL的系统中,所有的修改在提交之前都要先写入WAL日志中。该步骤在读取被操作元组之后,记录预写日志(WAL)的位置,作为操作起始位置。也即通过标记WAL日志开始对该行被操作元组的位置,确定后续确定错误操作的起始点。
由于WAL日志的数据格式以及写入流程本身为本领域技术人员所习知,在此不做进一步赘述。
步骤S106,执行对被操作元组的操作,并在执行过程中进行预写日志的记录。被操作元组的操作并不仅仅是被操作元组本身的操作,还包括其关联操作。这些关联操作可以包括:由被操作元组的操作触发的目标表索引操作;由被操作元组的操作触发的目标表中触发器的操作。也就是说执行对被操作元组的操作的步骤包括:确定数据库被操作的目标表,在目标表上进行被操作元组的操作,判断被操作元组的操作是否触发关联操作,若是,则执行关联操作。上述关联操作同样被记载在WAL中。并且被操作元组的操作结果还包括关联操作的操作结果,也即如果关联操作的结果为失败的情况下,认为被操作元组的操作结果失败。
步骤S108,获取被操作元组的操作结果。被操作元组的操作结果包括被操作元组本身的操作结果以及关联操作的操作结果。其中被操作元组本身的操作失败的原因可能包括本行自身的错误元组,或是违反了目标表表上的某一种约束。关联操作的操作失败原因可以包括:触发器执行过程中发生了错误、错误的数据导致了行级触发器发生了错误、错误的数据导致了索引过程发生了错误。
步骤S110,在被操作元组的操作结果指示失败的情况下,以操作起始位置为起点搜索预写日志中被操作元组对应事务的条目,以确定错误操作。由于具有上述操作起始位置,可以确定出预写日志中,通过事务标识等手段确定出预写日志中被操作元组对应事务的条目。批量操作中,操作可以为并行操作,通过WAL搜索对应事务的条目,可以确定出针对该行操作元组的操作
步骤S112,对错误操作进行回滚,并在回滚完成后读取批量数据操作的下一条被操作元组。例如对于写入操作,在一般情况下可以直接将写入的该元组直接置为无效,相比于直接删除新插入的元组,可以提高数据库的回滚处理效率。也就是说,在一般情况下,可以从预写日志中获取数据写入位置;按照数据写入位置将对应数据标识为无效。在某些特殊情况下,例如数据不允许置为无效或者配置有其他校验手段的情况下,可以直接删除新插入的元组。对于数据删除操作,可以恢复被删除的元组。对于数据变更操作,可以将数据恢复被操作之前的状态。也即对于数据删除操作、数据变更操作,可以从预写日志中获取操作前的数据信息,并恢复至数据删除操作和/或数据变更操作执行之前的状态。
对错误操作进行回滚的步骤包括:从预写日志中获取操作前的数据信息,并恢复至数据删除操作和/或数据变更操作执行之前的状态。
关联操作出现的错误,可以根据关联操作的类型进行后续处理,例如关联操作为由被操作元组的操作触发的目标表索引操作的情况下,如果数据库系统没有配置回表确认索引关联的数据是否存在的逻辑,可以不需要做进一步处理,从而节省回滚操作。如果数据库系统配置有回表确认索引关联的数据是否存在的逻辑,可以回滚目标表索引操作,以将索引恢复至被操作元组的操作触发索引操作之前的状态。
对于由被操作元组的操作触发的目标表中触发器的操作,并且对触发器操作进行回滚的步骤还包括:回滚触发器的操作,以将数据库恢复至触发器被触发之前的状态。
在完成回滚之后,还可以进一步利用行级上下文记录的资源进行回收,避免内存侧资源没有得到有效释放。资源释放后,可以保证系统资源不因为行级错误而泄露。也就是说对批量数据操作中的每行操作的上下文进行记录,在批量数据操作中某条数据的操作出现失败的情况下并对失败操作进行回滚之后,根据记录的上下文释放所述失败操作占用的资源。回收的资源包括:内存上下文、元组描述符、表内存缓存、系统表缓存、缓冲缓存、计划缓存、结果级缓存。
如果在被操作元组的操作结果指示成功的情况下,本方法还可以还包括:读取批量数据操作的另一条被操作元组,并记录预写日志的位置。也即如果一条被操作元组成功完成操作后,对下一条元组继续执行上述实施例的数据库的数据回滚方法。
本实施例的数据库的数据回滚方法,针对批量数据操作中的每一条被操作元组,记录WAL的相应位置,在被操作元组的操作失败的情况下,利用WAL搜索得出该条被操作元组的错误操作,从而根据WAL确定出错误操作进行回滚,回滚完成后继续完成批量操作。回滚过程不需要回滚段,对于整个批量操作而言,相当于跳过忽略了失败的被操作元组,不需要中断整个批量操作,提高了数据库的处理效率。
针对现有技术的数据库进行批量操作时,如果没有回滚日志(undo),难于定位错误数据并进一步在系统中回滚,相比而言本实施例的数据回滚方法解决了以下问题:在不引入undo日志系统的前提下,定位本次批量修改中的错误数据;通过解析WAL日志,回滚错误的数据不仅包括相关表数据的回滚,还包含通过触发器以及其他的技术手段引发的数据库系统中元数据的回滚;避免了错误数据引发的资源泄露。
数据库的批量数据的操作是指通过对一个或者多个不同表上的数据进行关系查询,查询的结果集往往较多。将查询的结果批量的写入(包含删除和变更)到目标表中。在操作的过程中可能会出现违反目标表上约束的元组数据。另外目标表上如果建有索引、触发器,操作过程还可能会出发相关的其他表的数据的操作。本实施例通过预写日志搜索的方式,定位这些错误数据(既包含了违反表约束的元组数据、又包含这些错误数据触发的写入其他表的元组数据)。
图2是根据本发明一个实施例的数据库的数据回滚方法的进行数据操作的流程图。图2中以批量写入为例进行介绍,本领域技术人员可以了解到其他批量操作,例如批量修改、批量删除以及包含插入、修改、删除中多种的批量操作可相应进行处理。本实施例的方法进行批量数据操作的过程包括:
步骤S202,获取到一行元组。
步骤S204,记录WAL的位置,记为该行元组的起始点start。
步骤S206,写入元组,同时写WAL;写入的过程每进行一条元组的写入或者修改(既包含数据元组,也包含系统的元数据元组)都进行预写日志的记录
步骤S208,执行该行元组的操作,判断是否写入成功,如果写入成功,则返回执行步骤S202,进行下一行元组的读取,
步骤S210,搜索WAL,搜索范围为从start到当前事务的最后一条日志;也即搜索条件为:从写前记下的start位置开始搜索;当前事务的预写日志,终止到当前事务最后一条预写日志。搜索范围有限,可以方便快捷地定位所有的错误。
步骤S212,判断搜索是否完成,也即判断是否还存在本事务的日志。如果搜索完成则表示回滚成功,可以返回执行步骤S202,进行下一行元组的读取。搜索完成后就可以将此过程中所有的错误数据都找到。
步骤S214,通过分析搜索得出的日志进行错误数据的回滚;
步骤S216,在批量操作没有下一行元组的情况下,批量写入结束。
上述方法中错误数据搜索出来后的结果是一条条的预写日志。这些日志既包含了本行的错误元组,或是违反了表上的某一种约束,或是此行级触发器执行过程中发生了错误,或是错误的数据导致了行级触发器发生了错误。因此需要将这些错误的写入或者删除行为进行回滚。回滚后继续进行后面行的写入,错误的数据被跳过了一样,但实际上是写入又回滚的过程。
回滚的过程进行的操作包括:对数据元组或者系统数据元组,如果预写日志中记录下了写入数据的位置信息,可原地进行修改,比如插入行的行级指针,那么就可以直接对该行在数据库中标记为无效,或者删除。对索引相关的数据,确定数据库系统有无回表确认索引关联的数据是否存在的逻辑,如果存在则不需要做进一步处理。否则要单独对索引进行回滚操作。由于原地修改不需要进行额外空间的分配。
对于存储相关的修改,如创建表的文件,则需要维护一个单独(行级)的上下文,在发生错误的时候将此上下文上记录的资源进行回收。
在发生行级错误的时候,通常由于后续的执行逻辑被跳过,因此导致很多内存侧的资源没有得到有效的释放,因此需要通过行级的上下文释放这些资源。行级上下文通常包含:内存上下文(并行处理的其他事务)、元组描述符、表的内存、表内存缓存、系统表缓存、缓冲缓存、计划缓存、结果级缓存。上述,需要通过一个单独的实体进行存储,在发生错误的时候,通过该上下文能够索引到这些临时的内存分配情况,并根据需要进行资源的释放,从而保证系统资源不因为行级的错误而泄露。
本申请还提供了一种机器可读存储介质和计算机设备。图3是根据本发明一个实施例的机器可读存储介质30的示意图。图4是根据本发明一个实施例的计算机设备40的示意图。
机器可读存储介质30其上存储有机器可执行程序31,机器可执行程序31被处理器执行时实现上述任一实施例的数据库的数据回滚方法。
计算机设备40可以包括存储器420、处理器410及存储在存储器420上并在处理器410上运行的机器可执行程序31,并且处理器410执行机器可执行程序31时实现上述任一实施例的数据库的数据回滚方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
就本实施例的描述而言,机器可读存储介质30可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。机器可读存储介质30的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,机器可读存储介质30甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
计算机设备40可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备40可以是云计算节点。计算机设备40可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备40可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
计算机设备40可以包括适于执行存储的指令的处理器410、在操作期间为所述指令的操作提供临时存储空间的存储器420。处理器410可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器420可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储系统。
处理器410可以通过系统互连(例如PCI、PCI-Express等)连接到适于将计算机设备40连接到一个或多个I/O设备(输入/输出设备)的I/O接口(输入/输出接口)。I/O设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。I/O设备可以是计算机设备40的内置组件,或者可以是外部连接到计算设备的设备。
处理器410也可以通过系统互连链接到适于将计算机设备40连接到显示设备的显示接口。显示设备可以包括作为计算机设备40的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备40的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过系统互连将计算机设备40连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN))、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。
本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括关联操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
Claims (10)
1.一种数据库的数据回滚方法,包括:
启动批量数据操作;
读取所述批量数据操作中一条被操作元组,并记录预写日志的位置,作为操作起始位置;
执行对所述被操作元组的操作,并在所述执行过程中进行预写日志的记录;
获取所述被操作元组的操作结果;
在所述被操作元组的操作结果指示失败的情况下,以所述操作起始位置为起点搜索所述预写日志中所述被操作元组对应事务的条目,以确定错误操作;
对所述错误操作进行回滚,并在回滚完成后读取所述批量数据操作的下一条被操作元组。
2.根据权利要求1所述的数据库的数据回滚方法,其中
所述执行对所述被操作元组的操作的步骤包括:确定所述数据库被操作的目标表,在所述目标表上进行所述被操作元组的操作,判断所述被操作元组的操作是否触发关联操作,若是,则执行所述关联操作,并且
所述被操作元组的操作结果还包括所述关联操作的操作结果。
3.根据权利要求2所述的数据库的数据回滚方法,其中,
所述关联操作包括:由所述被操作元组的操作触发的目标表索引操作,并且
对所述错误操作进行回滚的步骤还包括:回滚所述目标表索引操作,以将所述索引恢复至所述被操作元组的操作触发索引操作之前的状态。
4.根据权利要求2所述的数据库的数据回滚方法,其中,
所述关联操作包括由所述被操作元组的操作触发的目标表中触发器的操作,并且
对所述错误操作进行回滚的步骤还包括:回滚所述触发器的操作,以将所述数据库恢复至所述触发器被触发之前的状态。
5.根据权利要求1所述的数据库的数据回滚方法,其中
所述被操作元组的操作包括数据写入操作,并且
对所述错误操作进行回滚的步骤包括:从所述预写日志中获取数据写入位置;按照所述数据写入位置将对应数据标识为无效。
6.根据权利要求1所述的数据库的数据回滚方法,其中
所述被操作元组的操作包括数据删除操作和/或数据变更操作;
对所述错误操作进行回滚的步骤包括:从所述预写日志中获取操作前的数据信息,并恢复至所述数据删除操作和/或所述数据变更操作执行之前的状态。
7.根据权利要求1所述的数据库的数据回滚方法,其中
在所述被操作元组的操作结果指示成功的情况下,还包括:
读取所述批量数据操作的另一条被操作元组,并记录所述预写日志的位置。
8.根据权利要求1所述的数据库的数据回滚方法,其中
所述被操作元组包括数据元组和/或数据库系统的元数据元组。
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的数据库的数据回滚方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的数据库的数据回滚方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211666734.4A CN116089394A (zh) | 2022-12-23 | 2022-12-23 | 数据库的数据回滚方法、存储介质与设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211666734.4A CN116089394A (zh) | 2022-12-23 | 2022-12-23 | 数据库的数据回滚方法、存储介质与设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116089394A true CN116089394A (zh) | 2023-05-09 |
Family
ID=86203672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211666734.4A Pending CN116089394A (zh) | 2022-12-23 | 2022-12-23 | 数据库的数据回滚方法、存储介质与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116089394A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117827979A (zh) * | 2024-03-05 | 2024-04-05 | 数翊科技(北京)有限公司武汉分公司 | 一种数据批量导入方法、装置、电子设备及存储介质 |
-
2022
- 2022-12-23 CN CN202211666734.4A patent/CN116089394A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117827979A (zh) * | 2024-03-05 | 2024-04-05 | 数翊科技(北京)有限公司武汉分公司 | 一种数据批量导入方法、装置、电子设备及存储介质 |
CN117827979B (zh) * | 2024-03-05 | 2024-05-17 | 数翊科技(北京)有限公司武汉分公司 | 一种数据批量导入方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8108343B2 (en) | De-duplication and completeness in multi-log based replication | |
US8560500B2 (en) | Method and system for removing rows from directory tables | |
US20130041900A1 (en) | Script Reuse and Duplicate Detection | |
CN111259004B (zh) | 一种存储引擎中数据索引的方法以及相关装置 | |
US20160117375A1 (en) | Online Schema and Data Transformations | |
CN109240854B (zh) | 对误操作引起的更改进行数据恢复的方法及系统 | |
CN110609860A (zh) | 数据etl处理方法、装置、设备及存储介质 | |
CN116089394A (zh) | 数据库的数据回滚方法、存储介质与设备 | |
CN114896641A (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
CN115145697A (zh) | 数据库事务的处理方法、装置及电子设备 | |
EP2797001B1 (en) | System and method for creating variants in a test database during various test stages | |
CN118069745A (zh) | 基于事务日志的SQL Server增量获取方法、存储介质及设备 | |
CN111444208B (zh) | 一种数据更新方法及相关设备 | |
CN108280097B (zh) | 一种数据库系统的故障处理方法和装置 | |
CN113268470A (zh) | 一种高效的数据库回滚方案验证方法 | |
CN117708087A (zh) | 基于用户编辑的内容数据记录调用方法及系统 | |
US11138182B2 (en) | Compensating data corruption causing actions at runtime | |
WO2019071899A1 (zh) | 电子装置、车辆数据导入方法及存储介质 | |
CN110543485B (zh) | 一种基于快照的区块链预约归档方法 | |
US11481376B2 (en) | Platform for handling data corruptions | |
CN116226079A (zh) | 数据库的数据操作错误的处理方法、存储介质与设备 | |
CN116204354A (zh) | 数据库的数据写入错误的处理方法、存储介质与设备 | |
CN112612773A (zh) | 数据库同步测试方法、装置、计算机设备及存储介质 | |
CN112749156A (zh) | 数据处理方法、数据库管理系统和数据处理设备 | |
CN114443625A (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 | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 100102 201, 2 / F, 101, No. 5 building, No. 7 Rongda Road, Chaoyang District, Beijing Applicant after: China Electronics Technology Group Jincang (Beijing) Technology Co.,Ltd. Address before: 100102 201, 2 / F, 101, No. 5 building, No. 7 Rongda Road, Chaoyang District, Beijing Applicant before: BEIJING KINGBASE INFORMATION TECHNOLOGIES Inc. Country or region before: China |