CN106126658B - 一种基于虚拟存储器快照的数据库检查点构建方法 - Google Patents

一种基于虚拟存储器快照的数据库检查点构建方法 Download PDF

Info

Publication number
CN106126658B
CN106126658B CN201610483743.8A CN201610483743A CN106126658B CN 106126658 B CN106126658 B CN 106126658B CN 201610483743 A CN201610483743 A CN 201610483743A CN 106126658 B CN106126658 B CN 106126658B
Authority
CN
China
Prior art keywords
transaction
database
virtual memory
checkpoint
memory snapshot
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
Application number
CN201610483743.8A
Other languages
English (en)
Other versions
CN106126658A (zh
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.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
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 University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN201610483743.8A priority Critical patent/CN106126658B/zh
Publication of CN106126658A publication Critical patent/CN106126658A/zh
Application granted granted Critical
Publication of CN106126658B publication Critical patent/CN106126658B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/23Updating
    • G06F16/2358Change logging, detection, and notification

Landscapes

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

Abstract

本发明公开了一种基于虚拟存储器快照的数据库检查点构建方法,所述方法包括:数据库中仅有一个事务进程,当接收到写入或者修改请求时,写入内存即可返回完成;数据库中仅有一个调度进程,在满足条件时,调度进程主动通知事务进程发起设立检查点的动作,而后调度进程接受事务进程和检查点进程的报告,更新系统状态;事务进程在接收到调度进程通知后,建立虚拟存储快照的操作,然后启动检查点进程;检查点进程启动后,检查点依据虚拟存储快照,将此刻内存中全部更新数据以及日志写入磁盘中,实现了提高了数据库系统中事务吞吐率,避免了建立检查点对数据库事务的阻塞或者带来性能抖动的技术效果。

Description

一种基于虚拟存储器快照的数据库检查点构建方法
技术领域
本发明涉及计算机软件领域,具体地,涉及一种基于虚拟存储器快照的数据库检查点构建方法。
背景技术
近年来,联机事务处理(OLTP)在大数据环境中面临着越来越高的性能要求,要求数据库能够更高效、更精确,同时更可靠的处理高并发事务。传统的数据库为了满足可靠性要求,必须要需要依靠日志写磁盘来实现其可靠性。磁盘的速度远远慢于我们内存,就算是固态硬盘,其速度与内存有着数量级的差异。传统数据库多采用了日志来保证书数据库的可靠性,类似Oracle的重做日志(redo log)和撤销日志(undo log),Mysql中的bin-log。写数据时频繁的移动磁头进行随机写会带来磁盘性能的下降,进而影响事务处理效率。为了避免这种情况,数据库一般不会直接将更新的数据写入磁盘。数据库先将数据放入内存的缓冲区中,然后在磁盘中写日志,缓存区到达一定阈值时才会把数据刷入磁盘,异常情况下以日志作为恢复的依据。这种技术统称为预写式日志(WAL)。在传统的硬件架构中,为了数据库的可靠性,日志的写盘是无法避免的。数据库的恢复依赖于日志,若日志过长,在恢复时也将等待较长的时间。为了减少错误发生时数据恢复的时间,数据库中将会建立检查点。检查点事件会将内存中缓存的事务和数据刷新到磁盘,并且关闭旧日志,建立和使用新日志。整库备份或者数据库空间添加服务器时会触发检查点事件,这类型的检查点会阻塞所有事务。而除此之外触发的一般检查点事件是不会阻塞事务的,但是对于事务线程是感知的,因为检查点事件即意味着数据缓存空间的切换,而检查点执行线程必然需要竞争获得该缓存空间的使用权,并且切需要申请新的缓存区资源。这里即存在着数据库事务性能的抖动。
综上所述,本申请发明人在实现本申请实施例中发明技术方案的过程中,发现上述技术至少存在如下技术问题:
在现有技术中,存在传统数据库中日志写磁盘降低事务性能,以及检查点阻塞事务或带来事务性能抖动的技术问题。
发明内容
本发明提供了种基于虚拟存储器快照的数据库检查点构建方法,解决了传统数据库中日志写磁盘降低事务性能,以及检查点阻塞事务或带来事务性能抖动的技术问题,实现了避免了日志文件写盘带来的事务性能下降,提高了数据库系统中事务吞吐率,同时避免了建立检查点对数据库事务的阻塞或者带来性能抖动,在事务性能提升的同时依靠硬件提供可靠性保证的技术效果。
为解决上述技术问题,本申请实施例提供了一种基于虚拟存储器快照的数据库检查点构建方法,包括步骤:
A、数据库中有且仅有一个事务进程,当接收到写入或者修改请求时,写入内存即可返回完成。内存由非易失内存模块(Non-Volatile Dual In-line Memory Module,以下统称为NVDIMM)构成,其专有的内存分配器提供类似文件系统的名字服务;
B、数据库中有且仅有一个调度进程,在满足条件时,它主动通知事务进程发起设立检查点的动作,而后它会接受事务进程和检查点进程的报告,更新系统状态;
C、事务进程在接收到调度进程通知后,(亦或者自主发起)建立虚拟存储快照的操作,然后启动检查点进程,负责所有的联机事务处理过程(Online TransactionProcessing,以下均简称OLTP)请求;
D、检查点进程启动后,它将会依据虚拟存储快照,将此刻内存中全部更新数据以及日志写入磁盘中,完成任务通知调度进程,之后该进程将自动结束;
其中,内存采用NVDIMM,写入内存的数据即可视为可靠,更新数据存在多版本并发控制,以保证检查点能够获得一致的数据库数据状态。采用多版本并发控制的原因是由于建立检查点进程后,检查点进程中依然会有事务线程在进行数据的更改,检查点根据自身获得的版本号来决定哪些数据是需要将其序列化到磁盘。如若不采用多版本并发控制,可能存在数据的不一致,即检查点中某些数据是某一个时刻的状态,而另一些数据是另一个时刻的状态。
其中,一张具体的数据表由多个分区组成,相关信息会作为元数据信息存储在内存中,事务进程将会产生多个线程,每一个线程将会负责一个分区的事务处理,当事务不涉及多个分区时,各个线程之间不需要同步,各自独立的完成相关事务。当事务涉及多个分区时,将会由一个唯一的特殊线程来负责统筹完成。各个线程在完成自己分区事务后,并行的在内存中维护所辖分区操作日志。跨分区的事务将由一个唯一的特殊的线程负责记录日志。采用这样的设计是为了加快事务的执行,尤其是当多数事务都是单表时,更容易发挥多核的性能优势。
其中,事务进程创建虚拟储器快照。事务进程运行在自己虚拟地址空间,而检查点进程启动后处于另外一个虚拟地址空间。但是在事务进程并未进行数据修改时,前者的虚拟地址空间和后者的虚拟地址空间中相同的虚拟地址指向完全一致的物理地址,即两者是完全一致的镜像。当事务进程修改数据时,由操作系统和硬件对该数据对应的物理页进行拷贝,该数据的虚拟地址将指向新产生的物理页,并且将更新应用于新的物理页。创建虚拟存储快照后,事务进程中所有的旧的日志被标记删除,后续新的操作将记录在新的日志中,由于虚拟快照的原因,旧的日志将由检查点进程归档到硬盘中。与此同时,检查点进程建立后,即可根据自己建立时获得的版本号开始进行数据的序列化到磁盘的操作。
在完成对应的检查点工作之后删除虚拟存储器快照。数据库周期性地或者按照自身需求创建新的虚拟存储器快照来进行建立新的检查点的操作,检查点的可靠性由NVDIMM保证。
本发明中的方法,利用硬件、操作系统以及NVDIMM内存,实现了基于虚拟存储器快照的快速检查点建立方法。
本发明中,利用硬件以及操作系统辅助的复制机制,来获得某时刻完全一致的虚拟存储器快照。处理器以及相关硬件针对虚拟内存管理的优化(虚拟存储器地址转换,高速缓存,写时拷贝),在我们迅速获得虚拟存储器快照中起到关键作用。
NVDIMM是一种可靠的内存。在断电时,NVDIMM可以利用自身的超级电容将DRAM中的内容刷新到非易失内存芯片中,它同时拥有DRAM的速度和非易失存储介质的可靠性。
根据本发明的实施例,放弃传统数据库系统中通过日志不断写盘来保证事务的可靠性,以期达到提高事务处理能力的目的。具体的措施,可以通过NVDIMM本身的可靠性和通过专有内存分配器提供的名字服务来实现内存日志的可靠。换言之,日志存在内存中即可视为可靠,事务可以迅速的提交而不必等待日志同步到磁盘中。当检查点事件触发时,日志会通过虚拟存储器快照由检查点进程批量的写入磁盘,而后标记删除旧日志。日志在内存中的数量超过一定的阈值时会触发检查点事件,从而保证在整个数据库运行过程中,日志不会持续的占有大量的内存。日志写磁盘的方式采用的是高效的批量写,充分利用磁盘顺序写更加高效的特点。
根据本发明,利用虚拟存储器快照实现了无阻塞检查点的快速建立,事务线程对于检查点事件完全是无感知的。检查点进程除了将旧日志刷盘外,还会将内存中的检查点事件产生之前已经提交事务的数据逐个刷盘,为了保证一致性,要求数据存在版本控制。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本发明提出了一种基于虚拟存储器快照的数据库检查点构建方法。在本发明模型中,避免了日志文件写盘带来的事务性能下降,提高了数据库系统中事务吞吐率,同时避免了建立检查点对数据库事务的阻塞或者带来性能抖动,在事务性能提升的同时依靠硬件提供可靠性保证。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定;
图1为刚启动检查点进程时虚拟内存与物理内存示意图;
图2为事务进程更新数据的同时,检查点进程将日志和数据刷入磁盘中示意图;
图3为实施例中的调度进程、检查点进程、事务进程模型示意图。
具体实施方式
本发明提供了种基于虚拟存储器快照的数据库检查点构建方法,解决了传统数据库中日志写磁盘降低事务性能,以及检查点阻塞事务或带来事务性能抖动的技术问题,实现了避免了日志文件写盘带来的事务性能下降,提高了数据库系统中事务吞吐率,同时避免了建立检查点对数据库事务的阻塞或者带来性能抖动,在事务性能提升的同时依靠硬件提供可靠性保证的技术效果。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
下面结合具体实施例及附图,对本发明作进一步地的详细说明,但本发明的实施方式不限于此。
实施例一:
请参考图1-图3,基于虚拟存储器快照的数据库检查点构建方法如下:
初始化系统,数据库启动,调度进程,事务进程先后被建立,事务进程和调度进程通过共享内存进行通信。事务进程的一种实施例如图3。事务进程根据配置文件以及数据库的元数据,决定启动的事务线程的数量,以及每个事务线程所服务的数据分区特征。例如,分区采用取模的方式获得。假设以4为模,某数据库的一张表表含有100行数据,那么该表的前面25个元祖由一个事务线程维护,之后的25个元祖由另外一个元祖维护,以此类推。只涉及一个分区的事务,事务线程完全不需要同步,分区将独立的建立日志,更新的数据缓冲区也是线程专属,不需要与其他线程竞争。日志和数据的更新方式与传统数据库一样,先在内存日志中写日志,然后再更新数据缓冲区。事务提交时要求数据缓冲区中打上时间戳,以用于检查点建立时区分是否需要写日磁盘。
当检查点事件被触发时,调度进程将会通知事务进程。事务进程中会有专门的检查点数据结构,用于标识检查点的版本号,该版本检查点的时间戳,以及该版本检查点的目前的状态(执行中,完成,失败)。事务进程中亦有专门负责调度的线程,接收到调度进程建立检查点的命令之后,会首先更新自己的检查点版本号、时间戳、标记其状态位为执行中,然后会调用系统接口,创建虚拟存储快照。例如,以linux操作系统为例,调用fork系统调用,即可创建虚拟存储快照。如图1所示,当fork调用刚完成的一瞬间,检查点进程和事务进程的虚拟存储器对应的物理页面完全是一模一样的。如图2所示,当事务进程更新了自己的数据之后,会触发copy-on-update机制,这时候事务进程虚拟地址空间对应的物理页面发生了变化——会将原本的物理页拷贝一份,将新的数据内容拷贝一份到新的物理页。因为fork调用会将正在执行事务的线程同样的拷贝,所以如果数据不存在版本控制,检查点写入的数据可能并不是建立检查点事件时真正的数据。为了保证检查点的一致性,要求数据要有版本控制而日志要求打上时间戳。检查点进程会通过快照中的检查点版本号和时间戳来决定哪些数据和日志是需要此次写入磁盘。在日志的处理上,各个日志文件单独的写入各自的文件。检查点进程完成任务后,会通知事务进程检查点完成,之后的事务中该检查点时间戳之前的日志和数据所占内存空间即可回收或重新利用。
上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:
本发明提出了一种基于虚拟存储器快照的数据库检查点构建方法,在本发明模型中,避免了日志文件写盘带来的事务性能下降,提高了数据库系统中事务吞吐率,同时避免了建立检查点对数据库事务的阻塞或者带来性能抖动,在事务性能提升的同时依靠硬件提供可靠性保证。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.一种基于虚拟存储器快照的数据库检查点构建方法,其特征在于,所述方法包括:
步骤A:数据库中有事务进程且数量为一个,当接收到写入或者修改请求时,写入内存即可返回完成,内存由非易失内存模块构成;
步骤B:数据库中有调度进程且数量为一个,在满足条件时,调度进程主动通知事务进程发起设立检查点的动作,而后调度进程接受事务进程和检查点进程的报告,更新系统状态;
步骤C:事务进程在接收到调度进程通知后,建立虚拟存储快照的操作,然后启动检查点进程,事务进程负责所有的联机事务处理过程请求;
步骤D:检查点进程启动后,检查点依据虚拟存储快照,将此刻内存中全部更新数据以及日志写入磁盘中,完成任务通知调度进程,然后通知调度进程自动结束;
其中,事务进程创建虚拟储器快照,事务进程运行在自己虚拟地址空间,检查点进程启动后处于另外一个虚拟地址空间,在事务进程并未进行数据修改时,事务进程的虚拟地址空间和检查点进程的虚拟地址空间中相同的虚拟地址指向一致的物理地址;当事务进程修改数据时,由操作系统和硬件对该数据对应的物理页进行拷贝,该数据的虚拟地址指向新产生的物理页,并且将更新应用于新的物理页。
2.根据权利要求1所述的基于虚拟存储器快照的数据库检查点构建方法,其特征在于,更新数据存在多版本并发控制。
3.根据权利要求1所述的基于虚拟存储器快照的数据库检查点构建方法,其特征在于,数据库中数据表由多个分区组成,相关信息作为元数据信息存储在内存中。
4.根据权利要求3所述的基于虚拟存储器快照的数据库检查点构建方法,其特征在于,事务进程产生多个线程,每一个线程负责一个分区的事务处理,当事务不涉及多个分区时,各个线程之间不需要同步,各自独立的完成相关事务;当事务涉及多个分区时,由第一特殊线程来负责统筹完成。
5.根据权利要求4所述的基于虚拟存储器快照的数据库检查点构建方法,其特征在于,各个线程在完成自己分区事务后,并行的在内存中维护所辖分区操作日志;跨分区的事务将由第二特殊线程负责记录日志。
6.根据权利要求1所述的基于虚拟存储器快照的数据库检查点构建方法,其特征在于,创建虚拟存储快照后,事务进程中所有的旧的日志被标记删除,后续新的操作将记录在新的日志中。
7.根据权利要求1所述的基于虚拟存储器快照的数据库检查点构建方法,其特征在于,旧的日志由检查点进程归档到硬盘中。
8.根据权利要求1所述的基于虚拟存储器快照的数据库检查点构建方法,其特征在于,在完成对应的检查点工作之后删除虚拟存储器快照,数据库周期性地或者按照自身需求创建新的虚拟存储器快照来进行建立新的检查点的操作。
CN201610483743.8A 2016-06-28 2016-06-28 一种基于虚拟存储器快照的数据库检查点构建方法 Active CN106126658B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610483743.8A CN106126658B (zh) 2016-06-28 2016-06-28 一种基于虚拟存储器快照的数据库检查点构建方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610483743.8A CN106126658B (zh) 2016-06-28 2016-06-28 一种基于虚拟存储器快照的数据库检查点构建方法

Publications (2)

Publication Number Publication Date
CN106126658A CN106126658A (zh) 2016-11-16
CN106126658B true CN106126658B (zh) 2019-03-19

Family

ID=57267399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610483743.8A Active CN106126658B (zh) 2016-06-28 2016-06-28 一种基于虚拟存储器快照的数据库检查点构建方法

Country Status (1)

Country Link
CN (1) CN106126658B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110119389B (zh) * 2018-01-09 2023-07-25 阿里巴巴集团控股有限公司 虚拟机块设备的写操作方法、快照创建方法及装置
CN111506253B (zh) * 2019-01-31 2023-06-20 阿里巴巴集团控股有限公司 一种分布式存储系统及其存储方法
CN110427329B (zh) * 2019-08-13 2023-04-25 杭州有赞科技有限公司 一种数据库sql性能数据的采集方法及系统
CN113391884A (zh) * 2020-03-13 2021-09-14 阿里巴巴集团控股有限公司 事务处理方法、装置、设备、存储介质、数据库系统
CN112486735A (zh) * 2020-12-21 2021-03-12 上海英方软件股份有限公司 一种保障应用层数据一致性的数据复制系统及方法
CN112559253B (zh) * 2020-12-24 2021-12-03 科东(广州)软件科技有限公司 一种计算机系统数据备份与还原的方法及装置
CN113821382B (zh) * 2021-11-24 2022-03-01 西安热工研究院有限公司 一种实时数据库数据处理方法、系统和设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1575464A (zh) * 1999-06-18 2005-02-02 奔流系统公司 利用事务语义法分段和处理连续数据流
CN103092955A (zh) * 2013-01-17 2013-05-08 华为技术有限公司 检查点操作方法、装置及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030208511A1 (en) * 2002-05-02 2003-11-06 Earl Leroy D. Database replication system
JPWO2015174062A1 (ja) * 2014-05-16 2017-04-20 日本電気株式会社 情報処理装置、情報処理方法およびコンピュータ・プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1575464A (zh) * 1999-06-18 2005-02-02 奔流系统公司 利用事务语义法分段和处理连续数据流
CN103092955A (zh) * 2013-01-17 2013-05-08 华为技术有限公司 检查点操作方法、装置及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SIREN: a memory-conserving, snapshot-consistent checkpoint algorithm for in-memory databases;Antti-Pekka Liedes,et al;《Proceedings of the 22nd international Conference on Data Engineering》;20061231;第1-12页
实时交互进程的并发检查点技术;廖剑伟;《电子科技大学学报》;20110731;第40卷(第4期);第573-576页

Also Published As

Publication number Publication date
CN106126658A (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
CN106126658B (zh) 一种基于虚拟存储器快照的数据库检查点构建方法
CA3121919C (en) System and method for augmenting database applications with blockchain technology
CN111143389B (zh) 事务执行方法、装置、计算机设备及存储介质
Rao et al. Using paxos to build a scalable, consistent, and highly available datastore
CN105159818B (zh) 内存数据管理中日志恢复方法及其仿真系统
US11132350B2 (en) Replicable differential store data structure
US6678809B1 (en) Write-ahead log in directory management for concurrent I/O access for block storage
EP2972891B1 (en) Multiversioned nonvolatile memory hierarchy for persistent memory
CN103092903B (zh) 数据库日志并行化
US5996088A (en) High-speed database checkpointing through sequential I/O to disk
CN1331063C (zh) 基于数据卷快照的在线数据备份方法
US10599630B2 (en) Elimination of log file synchronization delay at transaction commit time
US20110066804A1 (en) Storage device and information management system
US20120109895A1 (en) Versatile in-memory database recovery
US20060206538A1 (en) System for performing log writes in a database management system
JP2013531835A (ja) ハイブリッドoltp及びolap高性能データベースシステム
CN108804112A (zh) 一种区块链落账处理方法及系统
CN108509462B (zh) 一种同步活动事务表的方法及装置
CN104881371A (zh) 持久性内存事务处理缓存管理方法与装置
US20060224639A1 (en) Backup system, program and backup method
JP2016522514A (ja) オンライン・ホット・スタンバイ・データベースのためのレプリケーション方法、プログラム、および装置
DE102010013263A1 (de) Techniken, um ein energieausfallsicheres Caching ohne atomare Metadaten durchzuführen
CN104317944B (zh) 一种基于公式的时间戳动态调整并发控制方法
CN110515705A (zh) 可扩展的持久性事务内存及其工作方法
US7412577B2 (en) Shared data mirroring apparatus, method, and system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant