CN110096389A - 一种数据库的启动方法、装置、设备和存储介质 - Google Patents
一种数据库的启动方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN110096389A CN110096389A CN201910363961.1A CN201910363961A CN110096389A CN 110096389 A CN110096389 A CN 110096389A CN 201910363961 A CN201910363961 A CN 201910363961A CN 110096389 A CN110096389 A CN 110096389A
- Authority
- CN
- China
- Prior art keywords
- database
- rollback
- active transaction
- transaction
- affairs
- 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
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据库的启动方法、装置、设备和存储介质。其中,该方法包括:在检测到数据库的启动指令时,确定所述数据库在异常关闭时执行的活动事务;根据所述活动事务的回滚记录,封锁关联的数据对象;在所述数据库成功启动后,对封锁后的数据对象执行事务回滚操作。本发明实施例提供的技术方案,使得数据库启动期间仅需要查找异常关闭时执行的活动事务,无需访问对应的数据页,降低数据库启动阶段的IO开销,同时将事务回滚操作延迟到数据库成功启动后执行,缩短了数据库异常重启的时间,提高了数据库异常重启的速度。
Description
技术领域
本发明实施例涉及数据库处理领域,尤其涉及一种数据库的启动方法、装置、设备和存储介质。
背景技术
在数据库技术高速发展的当下,由于数据库运行中可能存在各类问题,导致数据库运行故障而异常关闭,此时需要重新启动异常关闭的数据库,继续执行相应的数据事务。此时,数据库异常重启时,除了执行常规的启动步骤外,还需要额外执行重做日志、回滚活动事务以及清除已提交事务;通过重做日志,将数据库中的数据恢复到故障产生时的状态;通过回滚活动事务,以保证事务的原子性特征;通过清除操作将标记为删除状态的数据记录物理删除,以释放存储空间。
由于回滚和清除操作需要读取和操作某些数据页,当数据库系统中存在大量需要回滚和清理的操作记录时,可能造成大量输入输出(Input Output,IO)开销,导致重启时间过长。例如,数据库故障前正在执行一条用于对某数据表进行全表更新操作的更新语句,如果当前已经更新了一亿行记录,故障重启时需要将这一亿行记录对应的数据页从磁盘加载到缓存中来执行回滚操作;如果缓存空间不足,还会引发缓存淘汰以及数据页刷盘等问题,进一步影响回滚效率;清除操作则取决于数据库故障时所存在的已提交未清除的事务数量,以及这些事务修改涉及的记录数量。并且在数据库故障重启时,一般串行执行回滚清除操作,此时串行执行也会影响数据库异常重启的速度。
此外,某类数据库为了缩短回滚和清除的时间,通过设置启动参数直接跳过回滚和清除操作,导致数据库故障时活动事务中已经修改的记录会固化到数据库中,同时存在大量已删除未清除的记录,造成数据库的存储空间浪费,在一定程度上影响数据库性能。
发明内容
本发明实施例提供了一种数据库的启动方法、装置、设备和存储介质,在保证事务原子性的同时,降低数据库在异常关闭后重新启动的IO开销,提高数据库异常重启的速度。
第一方面,本发明实施例提供了一种数据库的启动方法,该方法包括:
在检测到数据库的启动指令时,确定所述数据库在异常关闭时执行的活动事务;
根据所述活动事务的回滚记录,封锁关联的数据对象;
在所述数据库成功启动后,对封锁后的数据对象执行事务回滚操作。
第二方面,本发明实施例提供了一种数据库的启动装置,该装置包括:
活动事务确定模块,用于在检测到数据库的启动指令时,确定所述数据库在异常关闭时执行的活动事务;
对象封锁模块,用于根据所述活动事务的回滚记录,封锁关联的数据对象;
启动回滚模块,用于在所述数据库成功启动后,对封锁后的数据对象执行事务回滚操作。
第三方面,本发明实施例提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的数据库的启动方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的数据库的启动方法。
本发明实施例提供了一种数据库的启动方法、装置、设备和存储介质,数据库在异常关闭后重新启动时,根据数据库在异常关闭时执行的活动事务的回滚记录,封锁关联数据对象,在数据库成功启动后,再对封锁后的数据对象执行事务回滚操作,使得数据库启动期间仅需要查找异常关闭时执行的活动事务,无需访问对应的数据页,降低数据库启动阶段的IO开销,同时将事务回滚操作延迟到数据库成功启动后执行,缩短了数据库异常重启的时间,提高了数据库异常重启的速度。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1A为本发明实施例一提供的一种数据库的启动方法的流程图;
图1B为本发明实施例一提供的数据库的启动过程的原理示意图;
图2为本发明实施例二提供的一种数据库的启动方法的流程图;
图3A为本发明实施例三提供的一种数据库的启动方法的流程图;
图3B为本发明实施例三提供的数据库的启动过程的原理示意图;
图4为本发明实施例四提供的一种数据库的启动装置的结构示意图;
图5为本发明实施例五提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
图1A为本发明实施例一提供的一种数据库的启动方法的流程图,本实施例可适用于任一种数据库在异常关闭后进行重新启动的情况中。本实施例提供的一种数据库的启动方法可以由本发明实施例提供的数据库的启动装置来执行,该装置可以通过软件和/或硬件的方式来实现,并集成在执行本方法的设备中,在本实施例中执行本方法的设备可以是平板电脑、台式机和笔记本等任意一种可以承载有数据库应用的智能终端。
具体的,参考图1A,该方法可以包括如下步骤:
S110,在检测到数据库的启动指令时,确定数据库在异常关闭时执行的活动事务。
具体的,由于数据库在运行过程中可能会遭遇各类故障,而导致异常关闭,此时数据库在异常关闭时极有可能正在执行各种事务,其中事务是指访问并可能更新数据库中各种数据项的一个程序执行单元,包括多种关联的数据操作,能够保证所包含的各个数据操作全部被执行,或者全部未被执行。事务具备原子性、一致性、隔离性和持久性;原子性使一个事务作为一个不可分割的工作单元,保证其中包括的各个操作全部执行或者全部不执行;一致性使数据库在事务执行前后从一个一致性状态变到另一个一致性状态;隔离性使不同事务内部的数据操作在执行时相互隔离;持久性保证事务一旦提交,该事务对数据库所做的修改就是永久的。
此外,为了在数据处理出错时数据库能够恢复到未出错前的状态,数据库会预先设置一个回滚表空间,用于存储各项数据操作对应的回滚记录。示例性的,数据库在执行某一事务时,首先会在回滚表空间中为该事务提前申请一个对应的存储区域,用于存储该事务中包括的各项数据操作对应的回滚记录,进而将不同事务的回滚记录分区存储;同时为了判断各个事务的当前执行状态,可以为回滚表空间中不同分区的各个事务分别设置对应的执行标识,用于区别该事务当前是否提交,如事务A的执行标识为“1”,表示事务A已提交,执行标识为“0”,表示事务A未提交;数据库针对任一事务,均会根据该事务的执行状态更新回滚表空间中对应的执行标识,本实施例中的活动事务是指数据库在遭遇故障异常关闭时正在执行的未提交的事务。
可选的,在检测到数据库的启动指令时,数据库首先会扫描回滚表空间来查询其中分区存储的各个事务的回滚记录以及对应的执行标识,并根据执行标识判断是否存在未提交的事务,该未提交事务为本实施例中的活动事务,由于数据库在正常关闭时,能够保证各个事务已经执行完成(提交或回滚)并清除,此时数据库启动时存在未提交事务则表示前次关闭是异常关闭,因此在检测到数据库的启动指令时,如果回滚表空间中不存在未提交事务,则按照正常的启动步骤启动数据库,若回滚表空间中存在未提交事务,如图1B所示,则根据查找到的未提交事务对应的回滚记录,在重新启动的数据库中为数据库异常关闭时的未提交事务重新构建新的事务对象,从而在重新启动的数据库中确定出异常关闭时执行的活动事务。
S120,根据活动事务的回滚记录,封锁关联的数据对象。
可选的,由于现有的数据库异常重启方式通常在重启过程中回滚活动事务,并清除已提交事务,增加了数据库启动的额外操作,影响了数据库异常重启的速度,因此为了提高数据库异常重启的速度,本实施例在数据库成功启动后再回滚活动事务,以减少数据库在异常重启期间的额外操作,提高数据库异常重启的速度,此时回滚活动事务与数据库异常重启后提供的正常服务并发控制执行,此时为了保证数据库正常服务在并发控制中的数据正确性,本实施例可以对活动事务关联的数据对象加锁,以保证在锁释放之前,其他事务无法更新该数据对象,进而确保数据库在异常重启后执行的正常事务对该数据对象进行操作的数据正确性。
具体的,本实施例在确定数据库在异常关闭时执行的活动事务时,如图1B所示,首先查找各个活动事务在回滚表空间中对应存储的回滚记录,通过解析每一回滚记录,确定活动事务在执行过程中关联的数据对象,并根据回滚记录中记录的活动事务对该数据对象执行的操作,对关联的数据对象添加对应的锁,以封锁该数据对象,确保在数据库成功启动后,其他事务无法更新该数据对象。
S130,在数据库成功启动后,对封锁后的数据对象执行事务回滚操作。
具体的,本实施例在执行常规的启动步骤时,仅需要扫描回滚表空间,确定数据库在异常关闭时执行的活动事务以及活动事务的回滚记录,无需访问活动事务执行过程中的具体数据,减少了数据库异常重启期间除常规启动步骤外的额外操作,在数据库成功启动后,正常对外提供数据库服务的同时,通过并发控制根据异常重启后确定的活动事务对封锁后的数据对象执行事务回滚操作,从而将可能造成大量IO开销的事务回滚操作延迟到数据库成功启动以后执行,在通过封锁活动事务对应的数据对象,进而保证其他事务执行的准确性的基础上,缩短了数据库异常重启的时间,从而提高了数据库异常重启的速度。
本实施例提供的技术方案,数据库在异常关闭后重新启动时,根据数据库在异常关闭时执行的活动事务的回滚记录,封锁关联数据对象,在数据库成功启动后,再对封锁后的数据对象执行事务回滚操作,使得数据库启动期间仅需要查找异常关闭时执行的活动事务,无需访问对应的数据页,降低数据库启动阶段的IO开销,同时将事务回滚操作延迟到数据库成功启动后执行,缩短了数据库异常重启的时间,提高了数据库异常重启的速度。
实施例二
图2为本发明实施例二提供的一种数据库的启动方法的流程图。本实施例是在上述实施例的基础上进行优化。可选的,本实施例中主要对封锁关联的数据对象以及在数据库成功启动后再执行事务回滚操作的具体过程进行详细的解释说明。
可选的,如图2所示,本实施例具体可以包括如下步骤:
S210,在检测到数据库的启动指令时,确定数据库在异常关闭时执行的活动事务。
S220,扫描活动事务的回滚页链表,得到对应的回滚记录。
可选的,在回滚表空间中预先为数据库执行的各个事务分配的存储区域中,会存在回滚页链表,该回滚页链表用于存储对应事务的回滚记录;此时本实施例在回滚表空间中确定出数据库在异常关闭时执行的活动事务时,可以通过扫描该活动事务在回滚表空间中对应的回滚页链表,得到活动事务中已执行操作对应的回滚记录。
S230,根据回滚记录对应的操作类型,确定关联的数据对象和封锁类型。
可选的,由于数据库中包含多种类型的封锁,具体的封锁类型是由所执行的数据操作的类型决定的;本实施例在得到活动事务对应的回滚记录后,可以通过解析每一条回滚记录,确定活动事务在执行过程中针对的数据对象以及对该数据对象执行的各项操作,进而确定回滚记录对应的操作类型,并根据该操作类型确定活动事务关联的数据对象以及封锁类型。具体的,本实施例中的数据对象可以为数据表或者数据记录等;同时封锁类型包括排它锁(X锁)、共享锁(S锁)和意向锁,例如,排它锁又称为写锁,此时若为针对某一事务对数据对象加上排它锁,则后续只允许该事务读取和修改该数据对象,其他事务无法读取和修改该数据对象;共享锁又称为读锁,此时若为针对某一事务对数据对象加上共享锁,则后续只允许该事务和其他事务读取该数据对象,而不允许该事务和其他事务修改该数据对象。
S240,根据封锁类型对关联的数据对象加锁。
可选的,在确定活动事务关联的数据对象和封锁类型后,本实施例根据封锁类型对关联的数据对象加上相应的锁,以便将活动事务的封锁信息恢复到数据库异常关闭时的状态。示例性的,若某一回滚记录为数据插入类型的回滚记录,则模拟正常数据插入操作,对涉及的数据表进行意向排它类型的封锁;若某一回滚记录为删除表类型的回滚记录,则模拟正常删除表操作,对涉及的数据表执行排它类型的封锁。
S250,在数据库成功启动后,通过异步任务根据活动事务的回滚记录对封锁后的数据对象执行事务回滚操作。
具体的,在数据库成功启动后,数据库可以在正常对外提供数据库服务的同时,启动一个异步任务,通过该异步任务来执行事务回滚操作,该异步任务根据本实施例中确定的活动事务的回滚记录,对该活动事务中对应封锁后的数据对象执行事务回滚操作,以确保活动事务的原子性和一致性,避免数据库在正常对外提供数据库服务中的数据出错。
本实施例提供的技术方案,数据库在异常关闭后重新启动时,根据数据库在异常关闭时执行的活动事务的回滚记录,封锁关联数据对象,在数据库成功启动后,再对封锁后的数据对象执行事务回滚操作,使得数据库启动期间仅需要查找异常关闭时执行的活动事务,无需访问对应的数据页,降低数据库启动阶段的IO开销,同时将事务回滚操作延迟到数据库成功启动后执行,缩短了数据库异常重启的时间,提高了数据库异常重启的速度。
实施例三
图3A为本发明实施例三提供的一种数据库的启动方法的流程图,图3B为本发明实施例三提供的数据库的启动过程的原理示意图。本实施例是在上述实施例的基础上进行优化。可选的,本实施例中主要对数据库启动过程中还包括的其他步骤的具体执行过程进行详细的解释说明。
可选的,如图3A所示,本实施例具体可以包括如下步骤:
S310,在检测到数据库的启动指令时,通过重做日志恢复数据库在异常关闭时的操作数据。
具体的,在检测到数据库的启动指令时,为了确保数据库本次启动的数据状态与前次关闭时的数据状态一致,本实施例可以通过查找数据库中的日志库,得到表示数据库已执行的各项操作的重做日志,从而通过在数据库启动过程中执行重做日志,将数据库中的各项操作数据恢复到数据库异常关闭时所处的数据状态,使得数据库在本次启动后的各项操作数据与前次关闭时的操作数据一致。
S320,确定数据库在异常关闭时执行的活动事务。
S330,将活动事务加入全局活动事务链表中,以在数据库成功启动后,根据活动事务执行其他事务;并将已提交事务加入预先设置的清除队列中。
具体的,在确定数据库在异常关闭时执行的活动事务后,可以根据该活动事务对应在回滚表空间中存储的回滚记录,在重新启动的数据库中新构建出在数据库前次异常关闭时执行的活动事务,并将该新构建的活动事务加入重新启动的数据库中的全局活动事务链表中,以将数据库在异常关闭时执行的活动事务作为重新启动的数据库中的全局参考,使数据库成功重新启动后在执行表示数据库对外提供的正常数据库服务的其他事务时,能够参考全局活动事务链表中的活动数据,从而确保其他事务在执行过程中得到准确的操作数据。示例性的,如果数据库在异常关闭时正在执行事务TRX_A,且事务TRX_A在数据库异常关闭时已经对T_A表插入了10万行记录;数据库在重新启动时,会在回滚表空间中确定事务TRX_A为活动事务,并在重新启动的数据库中新生成该活动事务TRX_A,并加入到对应的全局活动事务链表中;如果数据库在重新启动成功后生成新的事务TRX_B,该事务TRX_B执行语句:SELECT*FROM T_A,以查询T_A表中的数据,此时在执行事务TRX_B前,会将全局活动事务链表中的事务TRX_A加入到事务TRX_B自身的活动事务链表中;从而在执行事务TRX_B的查询语句扫描T_A表,并读取到事务TRX_A在T_A表中插入的数据时,根据多版本并发控制(Multi-Version Concurrency Control,MVCC)的可见性判断逻辑,认定此记录对事务TRX_B无效,直接忽略;最终事务TRX_B跳过了所有事务TRX_A插入的记录,进而获取到正确的数据。
此外,由于本实施例在确定数据库异常关闭时执行的活动事务时,会扫描回滚表空间,对其中存储的回滚记录对应的每一事务进行分析,因此在确定活动事务的过程中,还可以直接确定出数据库已提交但未删除修改前数据的事务,无需在后续采用额外的方式重新来确定数据库中的已提交事务,此时已提交事务未删除的修改前数据会占用大量存储空间,为了减少数据库存储空间的浪费,本实施例在确定出已提交事务时,可以直接将该已提交事务加入到预先设置的清除队列中,此时该清除队列中存储的仅是表示已提交事务身份信息的事务表示,而不是已提交事务的回滚记录,降低清除队列的存储负担。
S340,根据活动事务的回滚记录,封锁关联的数据对象。
S350,在数据库成功启动后,对封锁后的数据对象执行事务回滚操作,并清除清除队列中的事务。
可选的,在数据库成功启动后,本实施例不仅可以对封锁后的数据对象执行事务回滚操作,为了减少数据库存储空间的浪费,本实施例还可以在检测到清除队列中存在事务时,直接执行清除操作,清除数据库中的已提交事务。
本实施例提供的技术方案,数据库在异常关闭后重新启动时,根据数据库在异常关闭时执行的活动事务的回滚记录,封锁关联数据对象,在数据库成功启动后,再对封锁后的数据对象执行事务回滚操作,使得数据库启动期间仅需要查找异常关闭时执行的活动事务,无需访问对应的数据页,降低数据库启动阶段的IO开销,同时将事务回滚操作延迟到数据库成功启动后执行,缩短了数据库异常重启的时间,提高了数据库异常重启的速度。
实施例四
图4为本发明实施例四提供的一种数据库的启动装置的结构示意图,如图4所示,该装置可以包括:
活动事务确定模块410,用于在检测到数据库的启动指令时,确定数据库在异常关闭时执行的活动事务;
对象封锁模块420,用于根据活动事务的回滚记录,封锁关联的数据对象;
启动回滚模块430,用于在数据库成功启动后,对封锁后的数据对象执行事务回滚操作。
本实施例提供的技术方案,数据库在异常关闭后重新启动时,根据数据库在异常关闭时执行的活动事务的回滚记录,封锁关联数据对象,在数据库成功启动后,再对封锁后的数据对象执行事务回滚操作,使得数据库启动期间仅需要查找异常关闭时执行的活动事务,无需访问对应的数据页,降低数据库启动阶段的IO开销,同时将事务回滚操作延迟到数据库成功启动后执行,缩短了数据库异常重启的时间,提高了数据库异常重启的速度。
进一步的,上述对象封锁模块420,可以包括:
回滚记录确定单元,用于扫描活动事务的回滚页链表,得到对应的回滚记录;
关联信息确定单元,用于根据回滚记录对应的操作类型,确定关联的数据对象和封锁类型;
加锁单元,用于根据封锁类型对关联的数据对象加锁。
进一步的,上述启动回滚模块430,可以具体用于:
在数据库成功启动后,通过异步任务根据活动事务的回滚记录对封锁后的数据对象执行事务回滚操作。
进一步的,上述数据库的启动装置,还可以包括:
日志恢复模块,用于通过重做日志恢复数据库在异常关闭时的操作数据。
进一步的,上述数据库的启动装置,还可以包括:
活动事务加入模块,用于将活动事务加入全局活动事务链表中,以在数据库成功启动后,根据活动事务执行其他事务。
进一步的,上述数据库的启动装置,还可以包括:
已提交事务加入模块,用于将已提交事务加入预先设置的清除队列中。
进一步的,上述数据库的启动装置,还可以包括:
清除模块,用于在数据库成功启动后,清除清除队列中的事务。
本实施例提供的数据库的启动装置可适用于上述任意实施例提供的数据库的启动方法,具备相应的功能和有益效果。
实施例五
图5为本发明实施例五提供的一种设备的结构示意图。如图5所示,该设备包括处理器50、存储装置51和通信装置52;设备中处理器50的数量可以是一个或多个,图5中以一个处理器50为例;设备的处理器50、存储装置51和通信装置52可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储装置51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据库的启动方法对应的模块(例如,用于数据库的启动装置中的活动事务确定模块410、对象封锁模块420和启动回滚模块430)。处理器50通过运行存储在存储装置51中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据库的启动方法。
存储装置51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信装置52可用于实现设备间网络连接或者移动数据连接。
本实施例提供的一种设备可用于执行上述任意实施例提供的数据库的启动方法,具备相应的功能和有益效果。
实施例六
本发明实施例六还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述任意实施例中的数据库的启动方法。该方法具体可以包括:
在检测到数据库的启动指令时,确定数据库在异常关闭时执行的活动事务;
根据活动事务的回滚记录,封锁关联的数据对象;
在数据库成功启动后,对封锁后的数据对象执行事务回滚操作。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据库的启动方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述数据库的启动装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据库的启动方法,其特征在于,包括:
在检测到数据库的启动指令时,确定所述数据库在异常关闭时执行的活动事务;
根据所述活动事务的回滚记录,封锁关联的数据对象;
在所述数据库成功启动后,对封锁后的数据对象执行事务回滚操作。
2.根据权利要求1所述的方法,其特征在于,所述根据所述活动事务的回滚记录,封锁关联的数据对象,包括:
扫描所述活动事务的回滚页链表,得到对应的回滚记录;
根据所述回滚记录对应的操作类型,确定关联的数据对象和封锁类型;
根据所述封锁类型对所述关联的数据对象加锁。
3.根据权利要求1所述的方法,其特征在于,在所述数据库成功启动后,对封锁后的数据对象执行事务回滚操作,包括:
在所述数据库成功启动后,通过异步任务根据所述活动事务的回滚记录对封锁后的数据对象执行事务回滚操作。
4.根据权利要求1-3任一项所述的方法,其特征在于,在确定所述数据库在异常关闭时执行的活动事务之前,还包括:
通过重做日志恢复所述数据库在异常关闭时的操作数据。
5.根据权利要求1-3任一项所述的方法,其特征在于,在确定所述数据库在异常关闭时执行的活动事务之后,还包括:
将所述活动事务加入全局活动事务链表中,以在所述数据库成功启动后,根据所述活动事务执行其他事务。
6.根据权利要求1-3任一项所述的方法,其特征在于,在确定所述数据库在异常关闭时执行的活动事务之后,还包括:
将已提交事务加入预先设置的清除队列中。
7.根据权利要求6所述的方法,其特征在于,在所述数据库成功启动后,还包括:
清除所述清除队列中的事务。
8.一种数据库的启动装置,其特征在于,包括:
活动事务确定模块,用于在检测到数据库的启动指令时,确定所述数据库在异常关闭时执行的活动事务;
对象封锁模块,用于根据所述活动事务的回滚记录,封锁关联的数据对象;
启动回滚模块,用于在所述数据库成功启动后,对封锁后的数据对象执行事务回滚操作。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的数据库的启动方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的数据库的启动方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910363961.1A CN110096389A (zh) | 2019-04-30 | 2019-04-30 | 一种数据库的启动方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910363961.1A CN110096389A (zh) | 2019-04-30 | 2019-04-30 | 一种数据库的启动方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110096389A true CN110096389A (zh) | 2019-08-06 |
Family
ID=67446695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910363961.1A Pending CN110096389A (zh) | 2019-04-30 | 2019-04-30 | 一种数据库的启动方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110096389A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111367718A (zh) * | 2020-02-26 | 2020-07-03 | 上海达梦数据库有限公司 | 数据库的启动方法、装置、设备和存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5734817A (en) * | 1995-03-01 | 1998-03-31 | Unisys Corporation | Method for making a data base available to a user program during data base recovery |
US5850507A (en) * | 1996-03-19 | 1998-12-15 | Oracle Corporation | Method and apparatus for improved transaction recovery |
US6185577B1 (en) * | 1998-06-23 | 2001-02-06 | Oracle Corporation | Method and apparatus for incremental undo |
CN1842789A (zh) * | 2004-03-29 | 2006-10-04 | 微软公司 | 用于在数据库恢复期间快照查询的系统和方法 |
CN101127045A (zh) * | 2007-09-25 | 2008-02-20 | 中兴通讯股份有限公司 | 数据库可重复读实现方法、装置及数据库管理系统 |
CN100449548C (zh) * | 2007-04-11 | 2009-01-07 | 华为技术有限公司 | 数据库同步方法及系统 |
CN104978242A (zh) * | 2015-07-16 | 2015-10-14 | 浪潮(北京)电子信息产业有限公司 | 一种数据恢复方法及装置 |
CN107220145A (zh) * | 2017-05-19 | 2017-09-29 | 北京计算机技术及应用研究所 | 一种闪存数据库数据恢复的方法 |
CN108874588A (zh) * | 2018-06-08 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种数据库实例恢复方法和装置 |
-
2019
- 2019-04-30 CN CN201910363961.1A patent/CN110096389A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5734817A (en) * | 1995-03-01 | 1998-03-31 | Unisys Corporation | Method for making a data base available to a user program during data base recovery |
US5850507A (en) * | 1996-03-19 | 1998-12-15 | Oracle Corporation | Method and apparatus for improved transaction recovery |
US6185577B1 (en) * | 1998-06-23 | 2001-02-06 | Oracle Corporation | Method and apparatus for incremental undo |
CN1842789A (zh) * | 2004-03-29 | 2006-10-04 | 微软公司 | 用于在数据库恢复期间快照查询的系统和方法 |
CN100449548C (zh) * | 2007-04-11 | 2009-01-07 | 华为技术有限公司 | 数据库同步方法及系统 |
CN101127045A (zh) * | 2007-09-25 | 2008-02-20 | 中兴通讯股份有限公司 | 数据库可重复读实现方法、装置及数据库管理系统 |
CN104978242A (zh) * | 2015-07-16 | 2015-10-14 | 浪潮(北京)电子信息产业有限公司 | 一种数据恢复方法及装置 |
CN107220145A (zh) * | 2017-05-19 | 2017-09-29 | 北京计算机技术及应用研究所 | 一种闪存数据库数据恢复的方法 |
CN108874588A (zh) * | 2018-06-08 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种数据库实例恢复方法和装置 |
Non-Patent Citations (2)
Title |
---|
孙梅,张寿华,孙浩军: "《数据库原理及应用》", 28 February 2007, 中国铁道出版社 * |
郭盈发,张红娟: "《数据库原理》", 28 February 2002, 西安电子科技大学出版社 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111367718A (zh) * | 2020-02-26 | 2020-07-03 | 上海达梦数据库有限公司 | 数据库的启动方法、装置、设备和存储介质 |
CN111367718B (zh) * | 2020-02-26 | 2023-05-02 | 上海达梦数据库有限公司 | 数据库的启动方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11429641B2 (en) | Copying data changes to a target database | |
US8874515B2 (en) | Low level object version tracking using non-volatile memory write generations | |
US11386065B2 (en) | Database concurrency control through hash-bucket latching | |
JP3441807B2 (ja) | B木インデクスの管理方法およびシステム | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN105159818A (zh) | 内存数据管理中日志恢复方法及其仿真系统 | |
US20150293966A1 (en) | System and Method for Massively Parallel Processing Database | |
US20090271435A1 (en) | Data management method, data management program, and data management device | |
CN108363806A (zh) | 数据库的多版本并发控制方法、装置、服务器及存储介质 | |
US12093241B2 (en) | Method for replaying log on data node, data node, and system | |
US6944635B2 (en) | Method for file deletion and recovery against system failures in database management system | |
CN109726264B (zh) | 用于索引信息更新的方法、装置、设备和介质 | |
US11151157B2 (en) | Database management method | |
CN115145697A (zh) | 数据库事务的处理方法、装置及电子设备 | |
CN115408411A (zh) | 数据写入方法、装置、电子设备及存储介质 | |
US20200097581A1 (en) | Systems and methods of managing manifest refresh in a database | |
CN114489480A (zh) | 高并发存储数据的方法及系统 | |
CN110096389A (zh) | 一种数据库的启动方法、装置、设备和存储介质 | |
WO2023111910A1 (en) | Rolling back database transaction | |
CN116089359A (zh) | 数据库快照的生成方法、装置、电子设备和介质 | |
CN112765126B (zh) | 数据库事务的管理方法、装置、计算机设备和存储介质 | |
JP2023546818A (ja) | データベースシステムのトランザクション処理方法、装置、電子機器、及びコンピュータプログラム | |
WO2014061847A1 (ko) | 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법 | |
WO2021154516A1 (en) | Reducing requests using probabilistic data structures | |
CN114579604B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190806 |