CN113515501B - 非易失性内存数据库管理系统恢复方法、装置和电子设备 - Google Patents
非易失性内存数据库管理系统恢复方法、装置和电子设备 Download PDFInfo
- Publication number
- CN113515501B CN113515501B CN202110684054.4A CN202110684054A CN113515501B CN 113515501 B CN113515501 B CN 113515501B CN 202110684054 A CN202110684054 A CN 202110684054A CN 113515501 B CN113515501 B CN 113515501B
- Authority
- CN
- China
- Prior art keywords
- management system
- nonvolatile memory
- database management
- memory database
- metadata
- 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.)
- Active
Links
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
-
- 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/1446—Point-in-time backing up or restoration of persistent data
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例中提供了一种非易失性内存数据库管理系统恢复方法、装置和电子设备,当非易失性内存数据库管理系统处于故障状态时,对非易失性内存分配器进行恢复,并在非易失性内存分配器中查找持久化数据结构的根指针;根据根指针获取树状结构的持久化数据结构所占用的空间信息,根据占用的空间信息对管理系统的元数据进行更新;在元数据更新完成后,对非易失性内存数据库管理系统中的不存在的记录数据进行回收,以将非易失性内存数据库管理系统从故障状态恢复至工作状态。由于持久化数据结构为树状结构,因此只要找到根节点就能找到所有的持久化数据结构,并以此进行系统的故障恢复,无需通过日志文件对系统进行恢复。
Description
技术领域
本申请涉及数据存储技术,具体地,涉及一种非易失性内存数据库管理系统恢复方法、装置和电子设备。
背景技术
数据库管理系统是管理、存储和分析数据的计算机软件。用户可以通过数据库管理系统的接口读取、更新和分析数据。事务是用户执行操作的最小执行单元,一个事务可以包含多个访问或更新操作。数据库管理系统必须支持事务的原子性、一致性、隔离性以及持久性。事务的原子性指的是一个事务是不可分割的,对于数据的修改要么都存在,要么都不存在。事务的持久性指的是一个提交事务对数据的修改不会因为故障而丢失。
现有的数据库管理系统通常采用内存-非易失介质(如硬盘和固态硬盘)的双层存储架构。内存的访问延迟低,但是内存上的数据会因为断电而丢失,即数据是易失的,非易失性介质的访问延迟高,但是容量大,并且数据不会因为断电丢失,即数据是非易失的。为了防止数据丢失,这种双层存储架构的数据库管理系统需要通过日志文件记录事务的修改,并且定期地将日志文件持久化到非易失性介质上,然而日志文件会增大事务的开销,并且会占用一定的存储空间。
因此,提出了一种基于非易失性内存的单层架构的数据库管理系统。在非易失性内存的数据库管理系统中,事务可以直接修改非易失性内存上的数据,所以事务对数据的更新不会因为断电而丢失。因此,基于非易失性内存的单层架构的数据库管理系统无需使用日志文件对数据进行管理,降低了日志文件的开销,提高数据库性能并且节约了存储空间。
在数据库出现故障导致事务运行中断后,为了保证数据库中的事务的原子性,需要对数据库进行恢复,然而由于此种非易失性内存数据库管理系统没有日志文件,因此,在数据库发生故障后对数据库的恢复具有一定的难度。
发明内容
本申请实施例中提供了一种非易失性内存数据库管理系统恢复方法、装置和电子设备,用于解决目前的非易失性内存数据由于没有日志文件导致发生故障后难以恢复的问题。
根据本申请实施例的第一个方面,提供了一种非易失性内存数据库管理系统恢复方法,非易失性内存数据库管理系统包括非易失性内存分配器、记录数据和持久化数据结构,所述持久化数据结构为树状结构,所述方法包括:
判断所述非易失性内存数据库管理系统是否处于故障状态;
若是,则对所述非易失性内存分配器进行恢复,并在所述非易失性内存分配器中查找所述持久化数据结构的根指针;
根据所述根指针获取所述非易失性内存数据库管理系统的持久化数据结构占用的空间信息,根据占用的空间信息对所述非易失性内存数据库管理系统的元数据进行更新,其中,所述元数据用于记录所述非易失性内存数据库管理系统的空间分配信息;
在所述元数据更新完成后,对所述非易失性内存数据库管理系统中的不存在的记录数据进行回收,以将所述非易失性内存数据库管理系统从故障状态恢复至工作状态,其中,所述记录数据不存在是指所述记录数据未被提交事务插入或所述记录数据已经被删除。
根据本申请实施例的第二个方面,提供了一种非易失性内存数据库管理系统恢复装置,所述非易失性内存数据库管理系统包括非易失性内存分配器、记录数据和持久化数据结构,所述持久化数据结构是指相互之间存在逻辑结构关系和物理结构关系的持久化的数据元素的集合且所述持久化数据结构为树状结构,所述装置包括:
状态判断模块,用于判断所述非易失性内存数据库管理系统是否处于故障状态;
分配器恢复模块,用于在处于故障状态时对所述非易失性内存分配器进行恢复,并在所述非易失性内存分配器中查找所述持久化数据结构的根指针;
元数据恢复模块,用于根据所述根指针获取所述非易失性内存数据库管理系统的持久化数据结构占用的空间信息,根据占用的空间信息对所述非易失性内存数据库管理系统的元数据进行更新,其中,所述元数据用于记录所述非易失性内存数据库管理系统的空间分配信息;
记录数据分配模块,用于在所述元数据恢复完成后,对所述非易失性内存数据库管理系统中的不存在的记录数据进行回收,以将所述非易失性内存数据库管理系统从故障状态恢复至工作状态,其中,所述记录数据不存在是指所述记录数据未被提交事务插入或所述记录数据已经被删除。
根据本申请实施例的第三个方面,提供了一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储器之间通过所述总线通信,所述机器可读指令被所述处理器执行时执行第一方面提供的非易失性内存数据库管理系统恢复方法。
根据本申请实施例的第四个方面,提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行第一方面提供的非易失性内存数据库管理系统恢复方法。
本申请实施例提供了一种非易失性内存数据库管理系统恢复方法、装置和电子设备,当非易失性内存数据库管理系统处于故障状态时,对非易失性内存分配器进行恢复,并在非易失性内存分配器中查找持久化数据结构的根指针;根据根指针获取非易失性内存数据库管理系统的树状结构的持久化数据结构所占用的空间信息,根据占用的空间信息对非易失性内存数据库管理系统的元数据进行更新,其中,元数据用于记录非易失性内存数据库管理系统的空间分配信息;在元数据更新完成后,对非易失性内存数据库管理系统中的不存在的记录数据进行回收,以将非易失性内存数据库管理系统从故障状态恢复至工作状态。由于持久化数据结构为树状结构,因此只要找到根节点就能找到所有的持久化数据结构,并以此进行系统的故障恢复,无需通过日志文件对系统进行恢复。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的非易失性内存数据库管理系统N2DB的存储结构示意图;
图2为本申请实施例提供的非易失性内存数据库管理系统恢复方法的流程图;
图3为本申请实施例提供的步骤S12的子步骤流程图;
图4为本申请实施例提供的步骤S13的子步骤流程图;
图5为本申请实施例提供的元数据查找示意图;
图6为本申请实施例提供的步骤S14的子步骤流程图;
图7为本申请实施例提供的记录数据恢复示例图;
图8为本申请实施例提供的N2DB与现有的基于预写日志的存储引擎InnoDB的恢复时间对比示意图;
图9为本申请实施例提供的N2DB与InnoDB的存储空间对比示意图;
图10为本申请实施例提供的非易失性内存数据库管理系统恢复装置的功能模块图;
图11为本申请实施例提供的电子设备的示意图。
具体实施方式
在实现本申请的过程中,发明人发现,现有的数据库管理系统通常采用内存-非易失介质(如硬盘和固态硬盘)的双层存储架构。内存的访问延迟低,但是内存上的数据会因为断电而丢失,即数据是易失的,非易失性介质的访问延迟高,但是容量大,并且数据不会因为断电丢失,即数据是非易失的。
事务在执行时会访问和更新内存中的记录数据,为了保证数据是非易失的,数据库管理系统需要在非易失性介质上存储检查点,以将内存中的数据持久化到非易失性介质上。然而由于两种存储介质之间的访问延迟差异巨大,为了不降低数据库的性能,数据库管理系统不会频繁地将内存中的数据持久化到非易失性介质上。如果故障发生在内存的数据持久化之前,那么事务对数据的更新会因为故障而丢失。
为了防止数据丢失,这种双层存储架构的数据库管理系统需要通过日志文件记录事务的修改,并且定期地将日志文件持久化到非易失性介质上,然而日志文件会增大事务的开销,并且会占用一定的存储空间。
因此,现有技术提出了一种基于非易失性内存的单层架构的数据库管理系统。非易失性内存是一种字节寻址、低访问延迟以及大容量的非易失性存储介质。在非易失性内存的数据库管理系统中,事务可以直接修改非易失性内存上的数据,所以事务对数据的更新不会因为断电而丢失。因此,基于非易失性内存的单层架构的数据库管理系统无需使用日志文件对数据进行管理,降低了日志文件的开销,提高数据库性能并且节约了存储空间。
在数据库管理系统出现故障导致事务运行中断后,为了保证事务的原子性,需要对数据库管理系统进行恢复,然而由于此种非易失性内存数据库管理系统没有日志文件,因此,在数据库管理系统发生故障后进行恢复具有一定的难度。
因此,如何在无日志文件的前提下对非易失性内存数据库管理系统进行故障状态恢复是目前需要解决的问题。
针对上述问题,本申请实施例中提供了一种非易失性内存数据库管理系统恢复方法、装置和电子设备,当非易失性内存数据库管理系统处于故障状态时,对非易失性内存分配器进行恢复,并在非易失性内存分配器中查找持久化数据结构的根指针;根据根指针获取非易失性内存数据库管理系统的树状结构的持久化数据结构所占用的空间信息,根据占用的空间信息对非易失性内存数据库管理系统的元数据进行更新,其中,元数据用于记录非易失性内存数据库管理系统的空间分配信息;在元数据更新完成后,对非易失性内存数据库管理系统中的不存在的记录数据进行回收,以将非易失性内存数据库管理系统从故障状态恢复至工作状态。由于持久化数据结构为树状结构,因此只要找到根节点就能找到所有的持久化数据结构,并以此进行系统的故障恢复,无需通过日志文件对系统进行恢复。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
请参照图1,图1为本申请实施例提供的非易失性内存数据库管理系统N2DB的存储结构示意图。在本实施例中,数据管理系统(例如N2DB,Native-NVM Database)是一个采用多版本数据存储方式和force策略对非易失性内存数据库进行管理的系统,其中,force策略是指在事务提交之前,事务对数据的修改必须持久化到非易失性内存上,多版本是指数据库管理系统中存储的数据是多版本的。
具体地,非易失性内存数据库管理系统管理多个表格,每个表格中都存储了多条记录数据。当事务对记录数据进行修改时,事务不会直接修改该记录数据,而是创建一个新的版本,因此,一条记录数据可能存在多个历史版本,多个历史版本按照时间顺序构成一个链表,即为记录数据的版本链。
另外,在本实施例中,用于记录事务的状态信息的事务状态信息持久化地存储在非易失性内存上,且事务状态信息具有固定的地址。用于数据管理的元数据中记录了数据库的空间分配情况,为了避免内存泄漏,元数据也持久化地存储在非易失性内存上。
在本实施例中,非易失性内存上存储的数据结构(即持久化数据结构)为树状结构,且该持久化结构的根指针存储在固定的位置上。
在本实施例中,非易失性内存数据库管理系统采用了非易失性内存分配器(即图1中的NVM分配器)来管理非易失性内存,管理粒度为页粒度。在图1中,非易失性内存分配器包括位图和持久化指针数组,持久化指针数组中记录了持久化数据结构的根指针,通过根指针指示的位置信息能够获取到所有的持久化数据结构。事务状态数组是一个记录事务状态信息的数组,非易失性内存数据库管理系统中的所有元数据组织成一个树状结构(如图1中的元数据区所示)。
下面结合附图对本申请实施例提供的非易失性内存数据库管理系统的恢复方法进行详细说明。
请参照图2,图2为本申请实施例提供的非易失性内存数据库管理系统恢复方法的流程图。所述方法应用于电子设备,电子设备中包括非易失性内存数据库管理系统,电子设备用于对非易失性内存数据库管理系统进行恢复。在本实施例中,所述方法包括:
步骤S11,判断非易失性内存数据库管理系统是否处于故障状态。
步骤S12,若是,则对非易失性内存分配器进行恢复,并在非易失性内存分配器中查找持久化数据结构的根指针;
步骤S13,根据根指针获取非易失性内存数据库管理系统的持久化数据结构占用的空间信息,根据占用的空间信息对非易失性内存数据库管理系统的元数据进行更新。
其中,所述元数据用于记录所述非易失性内存数据库管理系统的空间分配信息;
步骤S14,在元数据恢复完成后,对非易失性内存数据库管理系统中的不存在的记录数据进行回收,以将非易失性内存数据库管理系统从故障状态恢复至工作状态。
在上述步骤中,当非易失性内存数据库管理系统重启后,需要先对系统的状态进行判断,判断该系统是否处于故障状态,若是,则需要对非易失性数据库进行恢复。在恢复时,首先对非易失性内存分配器进行恢复,并在所述非易失性内存分配器中查找所述持久化数据结构的根指针,然后根据持久化数据结构的根指针找到所有的持久化数据结构,并根据持久化数据结构占用的空间信息对非易失性内存数据库管理系统的元数据进行更新,最后对非易失性内存数据库管理系统中不存在的记录数据进行回收,从而将非易失性内存数据库管理系统从故障状态恢复至工作状态。由于持久化数据结构为树状结构,因此只要找到根节点就能找到所有的持久化数据结构,并以此进行系统的故障恢复,无需通过日志文件对系统进行恢复。
若非易失性内存数据库管理系统不处于故障状态,则无需进行恢复,可以直接加载非易失性内存分配器,在非易失性内存分配器加载完成后,再对非易失性内存数据库管理系统的元数据进行加载,以使所述非易失性内存数据进入工作状态。
可选地,在本实施例中,步骤S11,判断非易失性内存数据库管理系统是否处于故障状态,具体包括:
判断所述非易失性内存数据库管理系统中是否存在标志位;若不存在,则判定所述非易失性内存数据库管理系统处于故障状态。
在本实施例中,非易失性内存数据库管理系统正常退出时会在非易失性内存上设置一个标志位,以表示当前正常退出的位置。若非易失性内存数据库管理系统出现故障导致闪退或其他故障,则非易失性内存上不会存在标志位,因此可以通过是否存在标志位判断非易失性内存数据库管理系统是否处于故障状态。
可选地,请参照图3,图3为本申请实施例提供的步骤S12的子步骤流程图。在本实施例中,步骤S12包括以下子步骤:
步骤S121,扫描非易失性内存分配器的位图。
步骤S122,根据位图记录的页面分配信息回收所有未分配的页面。
步骤S123,查找持久化指针数组中的根指针。
在上述步骤中,故障会导致页面分配中断,因此一个页面可能是已被分配但还未被应用使用。因此在非易失性内存数据库管理系统重启之后,页面有三种状态,一是已分配的,二是已分配但未被使用的,三是未分配的。在NVM分配器的恢复过程中,先扫描非易失性内存分配器中的位图,位图中记录了非易失性内存数据库管理系统的页面分配信息,可以根据页面分配信息回收所有未被分配的页面。在未被分配的页面回收完成后,还需要找到持久化指针数组中的根指针。
也即是说,当所有未被分配的页面均被回收,且找到了根指针时,即认为非易失性内存分配器恢复完成。
可选地,请参照图4,图4为本申请实施例提供的步骤S13的子步骤流程图。在本实施例中,步骤S13包括以下子步骤:
步骤S131,根据根指针指示的位置信息查找非易失性内存数据库管理系统的持久化数据结构。
其中,所述持久化数据结构是指相互之间存在逻辑结构关系和物理结构关系的持久化的数据元素的集合;
步骤S132,统计持久化数据结构所占用的空间信息,根据空间信息对元数据进行更新,并回收所有未被使用的页面。
在上述步骤中,在找到持久化数据结构的根指针之后,需要进一步查找根指针指示的所有的持久化数据结构,并统计持久化数据结构占用的空间信息,以根据其占用的空间信息对用于进行数据管理的元数据进行更新,从而完成元数据的恢复。
另外,在非易失性内存数据库管理系统重启之后,页面有三种状态,一是已分配的,二是已分配但未被使用的,三是未分配的。在元数据恢复过程中,在找到所有持久化数据结构之后,还需要统计非易失性内存数据库管理系统对页面的使用情况,并根据页面使用情况回收未被使用的页面,以避免内存泄漏问题。
具体地,在本实施例中,持久化数据结构包括事务状态信息和元数据。步骤S131具体包括:
根据所述根指针指示的位置信息查找所述非易失性内存数据库管理系统的事务状态数组的地址和所述元数据的地址;根据所述事务状态数组的地址获取所有的事务状态信息;根据所述元数据的地址获取所有的元数据。
在上述步骤中,事务状态数组记录了事务状态信息,而事务状态数组的地址记录在持久化指针数组中,因此,根据根指针指示的位置信息能够获取到事务状态数组的地址,从而获取到事务状态数组存储的事务状态信息。
非易失性内存分配器的持久化指针数组的根指针还指示了非易失性内存数据库管理系统的元数据的地址,因此,根据根指针指示的位置信息还能够获取到元数据的地址,从而获取到所有的元数据。
可选地,请参照图5,图5为本申请实施例提供的元数据查找示意图。在本实施例中,非易失性内存数据库管理系统可以同时对多个数据库进行管理。以N2DB为例,在图5中,N2DB的元数据记录了N2DB中的三个数据库以及各个数据库元数据的地址,然后根据N2DB的元数据中的数据库元数据入口查找到名称为HelloDB的数据库元数据,随后根据数据库元数据中的表格元数据入口查找到TestTable表格的元数据,该表格元数据记录了该表格的名称、表格ID、模式信息以及记录数据的地址。
可选地,请参照图6,图6为本申请实施例提供的步骤S14的子步骤流程图。在本实施例中,步骤S14,包括:
步骤S141,根据更新后的元数据获取非易失性内存数据库管理系统的记录数据。
步骤S142,针对每一条记录数据,判断记录数据是否存在。
其中,所述记录数据存在是指所述记录数据由一个提交事务插入,且未被任何事务删除。
步骤S143,对不存在的记录数据进行回收。
步骤S144,根据未被回收的记录数据建立持久化索引。
在上述步骤中,在对记录数据进行恢复的过程中,首先需要针对每一条记录数据,判断其是否存在。记录数据存在是指该记录是由一个提交事务插入的,并且该记录还没有被任何事务删除。若记录数据不存在,则对该记录数据进行回收,在回收完成后,根据剩下的记录数据建立持久化索引,当每个表格的持久化索引建立完成后,非易失性内存数据库管理系统即可恢复至正常工作状态。
具体地,请参照图7,图7为本申请实施例提供的记录数据恢复示例图。在图7中,heads为版本链的入口,其存储了各个记录对应的数据,根据heads上存储的数据可以判断记录是否存在。一条记录的heads如果没有后继指针则说明该head必然是不存在的,以图7为例,该表格中只有A、B、C、D四条记录是存在的。
在现有技术中,数据库管理系统需要保证事务的原子性和持久性。故障会造成事务运行的中断,为了保证事务的原子性,数据库管理系统要在重启之后,需要消除中断的事务对数据进行的修改。这要求数据库管理系统能够在无日志文件的前提下识别出中断事务的修改,并消除中断事务对数据的修改。其次,数据库管理系统的空间分配通常分为两步:1)找到一块空闲的空间,修改该空间对应的分配状态;2)将该空间的地址记录在非易失性内存上。由于非易失性内存只支持8字节的原子写,因此,非易失性内存数据库管理系统系统无法保证步骤1和步骤2的原子性。如果故障发生在两个步骤之间,那么在数据库管理系统重启之后,数据库管理系统会认为该空间是已分配的,但是该空间确不能通过地址访问到。这种情况会造成内存泄漏。目前的方案都是通过日志文件记录空间的分配信息,数据库管理系统在重启之后可以根据日志文件判断哪些空间的分配过程是中断的,从而对数据库进行恢复同时解决内存泄漏的问题,但日志文件会占用存储空间,同时也会增大事务的开销。
因此,为了在无日志文件的前提下解决内存泄漏的问题,本实施例还增加了后台扫描线程,通过后台扫描线程解决内存泄漏的问题。具体地,在非易失性内存数据库管理系统从故障状态恢复至工作状态之后,所述方法还包括:
创建后台扫描线程,通过所述后台扫描线程对所述记录数据的版本链进行扫描,其中,所述版本链是指一条记录数据的多个历史版本按照时间顺序构成的链表;根据扫描结果对不在所述版本链上的版本对应的记录数据进行回收;根据扫描结果对所述版本链中属于中断事务的版本对应的记录数据进行回收。
以图7为例,后台扫描线程会对A、B、C、D四条版本链进行扫描,在扫描的过程中,后台扫描线程会记录版本链中的版本地址,根据各个版本地址可以回收其他不在版本链上的版本,以解决内存泄漏的问题。为了彻底消除中断事务对记录的修改,扫描线程还要识别并回收版本链中属于中断事务的版本。
本申请实施例提供的非易失性内存数据库管理系统恢复方法实现了在无日志的情况下进行数据恢复,用于降低非易失性内存数据库管理系统的恢复时间,减少了日志文件占用的存储空间。
请结合参照图8和图9,图8为本申请实施例提供的N2DB与现有的基于预写日志的存储引擎InnoDB的恢复时间对比示意图,图9为本申请实施例提供的N2DB与InnoDB的存储空间对比示意图。
为了验证非易失性内存数据库管理系统恢复方法的实际使用效果,发明人设计了在真实硬件条件下的恢复性能的对比实验。非易失性内存数据库管理系统选用了N2DB,在N2DB中实现了无日志的恢复机制,并选择了广泛使用的InnoDB存储引擎作为实验对照组。该实验要求两个系统执行同样数量的事务,事务数量分别是10万和100万,当事务提交数量满足条件时,同时中断两个系统,统计两个系统使用的存储空间,之后重启系统,统计恢复到工作状态的时间。
本申请提供的方法能够高速地将数据管理系统从故障状态恢复到工作状态,从图8所示的实验结果可以看出,N2DB的恢复时间远小于InnoDB,最高加速比达到717倍。本申请实施例还可以节约存储空间,从图9所示的实验结果可以看出,由于减少了日志文件和检查点,N2DB只需要InnoDB一半左右的存储空间就能达到同样的恢复效果。
综上所示,本申请实施例提供的非易失性内存数据库管理系统恢复方法通过创建后台扫描线程,降低了系统解决内存泄漏问题的开销,使得系统能够更快地恢复工作状态,且该恢复方法不需要对记录数据进行修改,进一步减少了恢复时间。与现有工作相比,该恢复方法可以显著降低恢复时间,最大的加速比为717倍。
另外,本申请实施例提供的方法允许非易失性内存数据库管理系统去掉日志文件,从而降低了事务执行时的开销,提高了事务的性能,并且节约了存储空间。与现有技术对比,无日志的非易失性内存数据库管理系统能节约多达53%的存储空间。
本申请实施例还提供了一种非易失性内存数据库管理系统恢复装置,如图10所示,图10为本申请实施例提供的非易失性内存数据库管理系统恢复装置110的功能模块图。在本实施例中,所述装置包括:
状态判断模块1101,用于判断所述非易失性内存数据库管理系统是否处于故障状态。
分配器恢复模块1102,用于在处于故障状态时对所述非易失性内存分配器进行恢复,并在所述非易失性内存分配器中查找所述持久化数据结构的根指针。
元数据恢复模块1103,用于根据所述根指针获取所述非易失性内存数据库管理系统的持久化数据结构占用的空间信息,根据占用的空间信息对所述非易失性内存数据库管理系统的元数据进行更新,其中,所述元数据用于记录所述非易失性内存数据库管理系统的空间分配信息。
记录数据分配模块1104,用于在所述元数据更新完成后,对所述非易失性内存数据库管理系统中的不存在的记录数据进行回收,以将所述非易失性内存数据库管理系统从故障状态恢复至工作状态,其中,所述记录数据不存在是指所述记录数据未被提交事务插入或所述记录数据已经被删除。
本申请实施例还提供了一种电子设备,请参照图11,图11为本申请实施例提供的电子设备10的示意图。在本实施例中,电子设备10包括:处理器11、存储器12和总线13,存储器12存储有处理器11可执行的机器可读指令,当电子设备10运行时,11处理器与存储器12之间通过总线13通信,机器可读指令被处理器11执行时执行本申请实施例提供的非易失性内存数据库管理系统恢复方法。
本申请实施例还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述实施例提供的非易失性内存数据库管理系统恢复方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种非易失性内存数据库管理系统恢复方法,其特征在于,非易失性内存数据库管理系统包括非易失性内存分配器、记录数据和持久化数据结构,所述持久化数据结构为树状结构,所述方法包括:
判断所述非易失性内存数据库管理系统是否处于故障状态;
若是,则对所述非易失性内存分配器进行恢复,并在所述非易失性内存分配器中查找所述持久化数据结构的根指针;
根据所述根指针获取所述非易失性内存数据库管理系统的持久化数据结构占用的空间信息,根据占用的空间信息对所述非易失性内存数据库管理系统的元数据进行更新,其中,所述元数据用于记录所述非易失性内存数据库管理系统的空间分配信息;
在所述元数据更新完成后,对所述非易失性内存数据库管理系统中的不存在的记录数据进行回收,以将所述非易失性内存数据库管理系统从故障状态恢复至工作状态,其中,所述记录数据不存在是指所述记录数据未被提交事务插入或所述记录数据已经被删除。
2.根据权利要求1所述的方法,其特征在于,所述非易失性内存分配器包括位图和持久化指针数组,对所述非易失性内存分配器进行恢复,并在所述非易失性内存分配器中查找所述持久化数据结构的根指针,包括:
扫描所述非易失性内存分配器的位图;
根据所述位图记录的页面分配信息回收所有未分配的页面;
查找所述持久化指针数组中的根指针。
3.根据权利要求2所述的方法,其特征在于,根据所述根指针获取所述非易失性内存数据库管理系统的持久化数据结构占用的空间信息,根据占用的空间信息对所述非易失性内存数据库管理系统的元数据进行更新,包括:
根据所述根指针指示的位置信息查找所述非易失性内存数据库管理系统中所有的持久化数据结构;
统计所有的持久化数据结构所占用的空间信息,根据所述空间信息对所述元数据进行更新,并回收所有未被使用的页面。
4.根据权利要求3所述的方法,其特征在于,所述持久化数据结构包括事务状态信息和元数据,根据所述根指针指示的位置信息查找所述非易失性内存数据库管理系统中所有的持久化数据结构,包括:
根据所述根指针指示的位置信息查找所述非易失性内存数据库管理系统的事务状态数组的地址和所述元数据的地址;
根据所述事务状态数组的地址获取所有的事务状态信息;
根据所述元数据的地址获取所有的元数据。
5.根据权利要求1所述的方法,其特征在于,在所述元数据更新完成后,对所述非易失性内存数据库管理系统中的不存在的记录数据进行回收,包括:
根据更新后的元数据获取所述非易失性内存数据库管理系统的记录数据;
针对每一条记录数据,判断所述记录数据是否存在,其中,所述记录数据存在是指所述记录数据由一个提交事务插入,且未被任何事务删除;
对不存在的记录数据进行回收;
根据未被回收的记录数据建立持久化索引。
6.根据权利要求1所述的方法,其特征在于,所述判断所述非易失性内存数据库管理系统是否处于故障状态,包括:
判断所述非易失性内存数据库管理系统中是否存在标志位;
若不存在,则判定所述非易失性内存数据库管理系统处于故障状态。
7.根据权利要求1-6任意一项所述的方法,其特征在于,在所述非易失性内存数据库管理系统从故障状态恢复至工作状态之后,所述方法还包括:
创建后台扫描线程,通过所述后台扫描线程对所述记录数据的版本链进行扫描,其中,所述版本链是指一条记录数据的多个历史版本按照时间顺序构成的链表;
根据扫描结果对不在所述版本链上的版本对应的记录数据进行回收;
根据扫描结果对所述版本链中属于中断事务的版本对应的记录数据进行回收。
8.一种非易失性内存数据库管理系统恢复装置,其特征在于,所述非易失性内存数据库管理系统包括非易失性内存分配器、记录数据和持久化数据结构,所述持久化数据结构是指相互之间存在逻辑结构关系和物理结构关系的持久化的数据元素的集合且所述持久化数据结构为树状结构,所述装置包括:
状态判断模块,用于判断所述非易失性内存数据库管理系统是否处于故障状态;
分配器恢复模块,用于在处于故障状态时对所述非易失性内存分配器进行恢复,并在所述非易失性内存分配器中查找所述持久化数据结构的根指针;
元数据恢复模块,用于根据所述根指针获取所述非易失性内存数据库管理系统的持久化数据结构占用的空间信息,根据占用的空间信息对所述非易失性内存数据库管理系统的元数据进行更新,其中,所述元数据用于记录所述非易失性内存数据库管理系统的空间分配信息;
记录数据分配模块,用于在所述元数据更新完成后,对所述非易失性内存数据库管理系统中的不存在的记录数据进行回收,以将所述非易失性内存数据库管理系统从故障状态恢复至工作状态,其中,所述记录数据不存在是指所述记录数据未被提交事务插入或所述记录数据已经被删除。
9.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储器之间通过所述总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1-7任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110684054.4A CN113515501B (zh) | 2021-06-21 | 2021-06-21 | 非易失性内存数据库管理系统恢复方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110684054.4A CN113515501B (zh) | 2021-06-21 | 2021-06-21 | 非易失性内存数据库管理系统恢复方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113515501A CN113515501A (zh) | 2021-10-19 |
CN113515501B true CN113515501B (zh) | 2022-10-25 |
Family
ID=78066053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110684054.4A Active CN113515501B (zh) | 2021-06-21 | 2021-06-21 | 非易失性内存数据库管理系统恢复方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113515501B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116775264A (zh) * | 2022-03-11 | 2023-09-19 | 华为技术有限公司 | 一种进程管理方法和电子设备 |
WO2024040502A1 (en) * | 2022-08-25 | 2024-02-29 | Intel Corporation | Apparatus, device, method, and computer program for persisting memory recovery actions |
CN117251307B (zh) * | 2023-11-10 | 2024-01-26 | 本溪钢铁(集团)信息自动化有限责任公司 | 一种事件订阅发布方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881371A (zh) * | 2015-05-29 | 2015-09-02 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
CN106598730A (zh) * | 2016-11-24 | 2017-04-26 | 上海交通大学 | 基于非易失性内存的可在线恢复对象分配器设计方法 |
CN112084032A (zh) * | 2020-09-15 | 2020-12-15 | 电子科技大学 | 一种写优化的持久性内存堆管理方法 |
-
2021
- 2021-06-21 CN CN202110684054.4A patent/CN113515501B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104881371A (zh) * | 2015-05-29 | 2015-09-02 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
CN106598730A (zh) * | 2016-11-24 | 2017-04-26 | 上海交通大学 | 基于非易失性内存的可在线恢复对象分配器设计方法 |
CN112084032A (zh) * | 2020-09-15 | 2020-12-15 | 电子科技大学 | 一种写优化的持久性内存堆管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113515501A (zh) | 2021-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113515501B (zh) | 非易失性内存数据库管理系统恢复方法、装置和电子设备 | |
US9836362B2 (en) | Cyclic commit transaction protocol | |
US20190073277A1 (en) | Transaction Recovery Method in Database System, and Database Management System | |
US7873683B2 (en) | File system having transaction record coalescing | |
US8560500B2 (en) | Method and system for removing rows from directory tables | |
US11755427B2 (en) | Fast recovery and replication of key-value stores | |
CN107992269B (zh) | 一种基于去重ssd的事务写入方法 | |
EP2590078B1 (en) | Shadow paging based log segment directory | |
JPH0812631B2 (ja) | データベース・トランザクション及び照会処理システム | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
CA3130011A1 (en) | Fragment-free recycling-based database multiversion concurrence control (mvcc) system | |
US8108356B2 (en) | Method for recovering data in a storage system | |
CN110597663A (zh) | 一种事务处理方法及装置 | |
CN107544859B (zh) | 在混合内存系统上用来保证数据一致性的检查点方法 | |
KR20170054767A (ko) | 데이터베이스 관리 시스템 및 그의 데이터 변경 및 복구 방법 | |
US20220129420A1 (en) | Method for facilitating recovery from crash of solid-state storage device, method of data synchronization, computer system, and solid-state storage device | |
US20190188097A1 (en) | Mirrored write ahead logs for data storage system | |
US10452496B2 (en) | System and method for managing storage transaction requests | |
CN115145697A (zh) | 数据库事务的处理方法、装置及电子设备 | |
US20140324782A1 (en) | Applying write elision | |
CN111444114B (zh) | 一种非易失性内存中数据的处理方法、装置及系统 | |
US11829291B2 (en) | Garbage collection of tree structure with page mappings | |
CN113253932A (zh) | 一种分布式存储系统的读写控制方法和系统 | |
US20120317384A1 (en) | Data storage method | |
KR101419428B1 (ko) | 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |