一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于值日志的检查点实现方法、系统、存储介质及设备与流程

2022-02-22 03:24:18 来源:中国专利 TAG:
1.本发明属于数据库
技术领域
:,具体涉及一种基于值日志的检查点实现方法、系统、存储介质及设备。
背景技术
::2.由于cpu速度和磁盘的速度存在较大的差距,各种数据库和key-value等数据处理系统都引入数据缓冲池,把数据库的数据页加载到内存的缓冲池中。数据的更新是在缓冲池中完成,这意味着数据页是“脏”的,即缓冲池中的数据页比磁盘上数据文件中的页新,需要通过一些机制把缓冲区中的数据页刷盘。3.假如每次一个数据页发生了变更,就启动刷盘,那么数据库的性能将变得非常差。同时如果这时发生了宕机,那么数据就不能恢复了。为了保证数据不丢失,当前各种数据库和key-value数据处理系统都普遍采用wal(writeaheadlog)策略,即当事务提交的时候,先生成redo日志,再在数据缓冲池中修改数据页。如果发生宕机而导致数据丢失时,只需要通过redo日志恢复即可。4.但是数据缓冲池的空间是有限的,redo日志空间也是有限的,即使缓冲区和redo日志都可以无限大,发生宕机后数据库/key-value数据处理系统需要重做所有的redo日志来恢复数据库,这个恢复时间有可能需要很长的时间,如几十分钟、几个小时甚至几个月。为了避免这些问题,数据库/key-value数据处理系统都引入检查点的技术。5.检查点就是把缓冲区的“脏”数据页都刷盘,同时把检查点对应的日志序列号(logsequencenumber,lsn)值写入磁盘中的控制文件来持久化。检查点保证了磁盘上控制文件中的lsn之前的所有数据缓冲池中的修改,都被写入磁盘文件。这样如果发生宕机,只要重做lsn之后的redo日志,这样可以回收内存中检查点lsn之前的redo日志空间,同时在缓冲池可用空间不够的情况下,将“脏”数据页写入磁盘,通过释放相应的内存区域来增大数据缓冲池可用空闲空间。6.但是传统的检查点因为要等待所有“脏”数据页刷盘,一方面“脏”数据页需要占用大量内存空间,直到对应页完成刷盘(对应随机写操作);另一方面,还必须对这些“脏”页维持锁定状态,避免数据被后面的更新事务进行修改,影响系统运行。技术实现要素:7.发明目的:针对现有技术中存在的问题,本发明提供一种基于值日志的检查点实现方法、系统、存储介质和设备,旨在缩短检查点运行时间和发生宕机时的恢复时间。8.技术方案:本发明一方面提供了一种基于值日志的检查点实现方法,包括:9.s1、值日志实现过程中,将插入操作保存在内存中;所述插入操作包括操作类型为插入的操作,以及由删除、修改操作转化来的插入操作;10.s2、获取值日志系统当前检查点对应的日志序列号;11.s3、冻结步骤s1中保存插入操作的内存区域,将其属性更改为只读;将冻结的内存区域加入待写入磁盘队列,并在内存中设置新的保存插入操作的可写区域;12.s4、将待写入磁盘队列中的内容写入磁盘;13.s5、将当前检查点对应的日志序列号写入磁盘中的检查点控制文件。14.作为优选,步骤s1中插入操作以skiplist、b树或b 树的结构保存在内存中。15.作为优选,所述当前检查点对应的日志序列号为写入值日志文件中的日志顺序号,或值日志文件尾部的偏移地址。16.作为优选,所述步骤s3中采用上排它锁的方式实现冻结;当冻结的内存区域加入待写入磁盘队列后释放所述排它锁。17.另一方面,本发明还提供了实现上述检查点实现方法的系统,包括:18.插入操作保存模块,用于值日志实现过程中,将插入操作保存在内存中;所述插入操作包括操作类型为插入的操作,以及由删除、修改操作转化来的插入操作;19.检查点日志序列号获取模块,用于获取值日志系统当前检查点对应的日志序列号;20.检查点冻结模块,用于冻结插入操作保存模块中保存插入操作的内存区域,将其属性更改为只读;将冻结的内存区域加入待写入磁盘队列,并在内存中设置新的保存插入操作的可写区域;21.检查点写盘模块,用于将待写入磁盘队列中的内容写入磁盘;22.检查点持久化模块,用于将当前检查点对应的日志序列号写入磁盘中的检查点控制文件。23.另一方面,本发明还提供了一种计算机可读取存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述检查点实现方法。24.另一方面,本发明还提供了一种检查点实现设备,包括处理器及存储介质,所述存储介质为上计算机可读取存储介质;所述处理器加载并执行所述存储介质中的指令及数据用于实现上述检查点实现方法。25.有益效果:与现有技术相比,本发明公开的基于值日志的检查点实现方法具有以下优点:26.1、相比传统数据库,不存在“脏”数据页,只有“脏”索引页,也就是插入操作占用的内存空间,大幅低于传统数据库“脏”页(包括数据页和索引页)占用的内存空间;27.2、值日志系统执行检查点操作时,只有冻结保存插入操作的内存区域瞬间会阻碍系统进行操作,冻结完毕立刻可以执行任意增删改查操作,几乎不影响系统正常运行;28.3、由于没有“脏”数据页,而保存插入操作的内存区域的大小可以设置指定,即其大小有限,所以检查点只需要对固定大小的内存区域完成刷盘即可,可以在秒级完成检查点操作;29.4、因为检查点对系统运行影响极小且完成时间也很短,可以频繁定期进行检查点操作,假如值日志系统出现宕机,可以从控制文件中最近的检查点日志序列号开始,基于值日志恢复数据,大幅缩短恢复的时间。附图说明30.图1为本发明公开的检查点实现方法的流程图;31.图2为本发明公开的检查点实现系统的组成示意图;32.图3为本发明公开的检查点实现设备的示意图。具体实施方式33.下面结合附图和具体实施方式,进一步阐明本发明。34.申请号为2021107280253的中国发明专利申请中公开了一种数据和日志一体化的值日志实现方法,其中通过值日志实现了数据库和数据处理系统持久化过程中只有顺序写、避免写多份数据的优点。本发明基于前述发明专利申请,提出了一种检查点实现方法,如图1所示,具体包括如下步骤:35.s1、值日志实现过程中,将插入操作保存在内存中;36.申请号为2021107280253的中国发明专利申请中,值日志的实现过程为:(1)数据处理系统中的工作线程或进程解析接收到的操作请求,确定操作类型;(2)当操作类型是数据更新操作时,工作线程或进程将删除、修改操作都转化为插入操作;(3)工作线程或进程在内存中执行插入操作并在内存中生成和最终写入到磁盘存储设备的相同格式的物理记录,随后将内存中的物理记录直接写入到值日志文件,或先写入到值日志缓冲区,等待写盘线程或进程刷盘,待刷盘完成后,把操作结果发送给客户端;(4)启用值日志缓冲区时,写盘线程或进程不断将值日志缓冲区的物理记录顺序写入到值日志文件末尾,并通知工作线程或进程完成刷盘任务。上述(1)-(4)步骤执行完毕后内存中修改的数据完成了写入磁盘的持久化操作。本发明实施例中,在步骤(2)后增加将插入操作保存在内存中;这里的插入操作包括操作类型为插入的操作,以及由删除、修改操作转化来的插入操作。37.将插入操作保存在内存中,即在内存中建立值日志系统的索引,本实施例中采用lsm树的组织方式来建立值日志系统的索引。具体地,在内存中的memtable保存最近的插入操作。可选地,可以以skiplist、b树或b 树的结构将插入操作保存在内存中。38.s2、值日志系统检查点工作线程/进程接收到执行检查点请求后,获取值日志系统当前检查点对应的日志序列号;39.执行检查点请求可以是定时发起、指定条件触发(如memtable中保存的内容大小达到预设的阈值时)或用户主动发送命令发起。当前检查点对应的日志序列号需要是递增的,可以采用写入值日志文件中的日志顺序号,或值日志文件尾部的偏移地址,此时偏移地址起到传统数据库lsn的相同作用。40.s3、值日志系统检查点工作线程/进程冻结步骤s1中保存插入操作的内存区域,将其属性更改为只读;本实施例中,采用对memtable上排它锁的方式实现冻结,冻结后的memtable转化为immutablememtable;将冻结的内存区域(即immutablememtable)加入待写入磁盘队列,释放排它锁,并在内存中设置新的保存插入操作的可写区域(即新的memtable)执行后续的增删改查操作;整个上排它锁、释放排它锁的冻结及解冻操作可以在毫秒级完成。41.s4、值日志系统检查点工作线程/进程将待写入磁盘队列中的内容写入磁盘,完成内存索引的持久化;42.s5、将当前检查点对应的日志序列号写入磁盘中的检查点控制文件,完成值日志系统检查点的持久化。43.本实施例还提供了实现上述检查点实现方法的系统,如图2所示,包括:44.插入操作保存模块1,用于值日志实现过程中,将插入操作保存在内存中;所述插入操作包括操作类型为插入的操作,以及由删除、修改操作转化来的插入操作;45.检查点日志序列号获取模块2,用于获取值日志系统当前检查点对应的日志序列号;46.检查点冻结模块3,用于冻结插入操作保存模块中保存插入操作的内存区域,将其属性更改为只读;将冻结的内存区域加入待写入磁盘队列,并在内存中设置新的保存插入操作的可写区域;47.检查点写盘模块4,用于将待写入磁盘队列中的内容写入磁盘;48.检查点持久化模块5,用于将当前检查点对应的日志序列号写入磁盘中的检查点控制文件。49.本实施例中,插入操作保存模块中插入操作以skiplist、b树或b 树的结构保存在内存中;检查点日志序列号获取模块获取的当前检查点对应的日志序列号为写入值日志文件中的日志顺序号,或值日志文件尾部的偏移地址;检查点冻结模块中采用上排它锁的方式实现冻结;当冻结的内存区域加入待写入磁盘队列后释放所述排它锁。50.本发明公开的检查点实现设备如图3所示,包括处理器31及存储介质32,所述存储介质32为计算机可读取存储介质,其上存储有计算机指令,该计算机指令运行时执行本发明所公开的检查点实现方法的步骤;处理器31加载并执行存储介质32中的指令及数据用于实现上述检查点实现方法。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献