CN111694806A - 一种事务日志的缓存方法、装置、设备和存储介质 - Google Patents
一种事务日志的缓存方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN111694806A CN111694806A CN202010505738.9A CN202010505738A CN111694806A CN 111694806 A CN111694806 A CN 111694806A CN 202010505738 A CN202010505738 A CN 202010505738A CN 111694806 A CN111694806 A CN 111694806A
- Authority
- CN
- China
- Prior art keywords
- log
- transaction
- packet
- current physical
- adaptation
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000006978 adaptation Effects 0.000 claims abstract description 113
- 230000003044 adaptive effect Effects 0.000 claims abstract description 64
- 230000006835 compression Effects 0.000 claims description 46
- 238000007906 compression Methods 0.000 claims description 46
- 238000011010 flushing procedure Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 5
- 239000002699 waste material Substances 0.000 abstract description 8
- 239000000872 buffer Substances 0.000 description 13
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001960 triggered effect Effects 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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
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)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种事务日志的缓存方法、装置、设备和存储介质。其中,该方法包括:如果检测到当前物理事务的提交指令,则确定所述当前物理事务的适配日志包,所述适配日志包的剩余缓存空间支持所述当前物理事务内事务日志的全部缓存;在所述适配日志包中缓存所述当前物理事务内的事务日志,并更新所述适配日志包下的有效日志偏移,以按照该有效日志偏移对所述适配日志包内的事务日志进行刷盘。本发明实施例提供的技术方案,避免一个物理事务内的事务日志横跨多个日志包缓存,无需对当前物理事务进行日志解析,提高事务日志的缓存效率,同时避免刷盘后的事务日志出现空洞区域的问题,减少事务日志的缓存空间浪费。
Description
技术领域
本发明实施例涉及数据库处理领域,尤其涉及一种事务日志的缓存方法、装置、设备和存储介质。
背景技术
目前,为了提升和优化数据库事务在执行过程中所生成的事务日志的刷盘效率,会预先设置一个日志缓冲区,由该日志缓冲区在数据库事务的执行过程中不断缓存相应的事务日志;而由于数据库事务中包含的数据操作过多,可能会使日志缓存存在遗漏,因此会将数据库事务划分成多个物理事务,每个物理事务内仅存在少量的数据操作。此时,在每一物理事务提交时,将该物理事务内的事务日志写入到日志缓冲区内,而在数据库事务提交或者日志缓冲区被写满时,触发日志缓冲区的日志刷盘操作。
但是,由于日志缓冲区由一系列配置为固定内存(如512字节)的日志文件页组成,在日志缓冲区内通过每个日志文件页来存储事务日志的控制和校验等信息,如8个字节的日志序号、2个字节的日志有效数据长度和2个字节的校验码等,使得日志文件页的有效日志空间较少。
此时,一个物理事务内的事务日志也可能跨过多个日志文件页缓存,因此需要对物理事务进行解析才能在多个日志文件页中格式化缓存,极大影响了事务日志的缓存效率;同时,每个日志文件页都有自己的结构化头,占用了大量额外空间,且物理事务的头信息不能跨页,导致日志文件页缓存事务日志时会存在空洞区域,并未完全被填满,从而浪费日志缓冲区内的部分缓存空间。
发明内容
本发明实施例提供了一种事务日志的缓存方法、装置、设备和存储介质,减少事务日志的缓存空间浪费,提高事务日志的缓存效率。
第一方面,本发明实施例提供了一种事务日志的缓存方法,该方法包括:
如果检测到当前物理事务的提交指令,则确定所述当前物理事务的适配日志包,所述适配日志包的剩余缓存空间支持所述当前物理事务内事务日志的全部缓存;
在所述适配日志包中缓存所述当前物理事务内的事务日志,并更新所述适配日志包下的有效日志偏移,以按照该有效日志偏移对所述适配日志包内的事务日志进行刷盘。
第二方面,本发明实施例提供了一种事务日志的缓存装置,该装置包括:
适配包确定模块,用于如果检测到当前物理事务的提交指令,则确定所述当前物理事务的适配日志包,所述适配日志包的剩余缓存空间支持所述当前物理事务内事务日志的全部缓存;
事务日志缓存模块,用于在所述适配日志包中缓存所述当前物理事务内的事务日志,并更新所述适配日志包下的有效日志偏移,以按照该有效日志偏移对所述适配日志包内的事务日志进行刷盘。
第三方面,本发明实施例提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的事务日志的缓存方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的事务日志的缓存方法。
本发明实施例提供了一种事务日志的缓存方法、装置、设备和存储介质,通过预先设定的日志包,以物理事务为单位进行事务日志的缓存,如果检测到当前物理事务的提交指令,则确定当前物理事务的适配日志包,此时该适配日志包的剩余缓存空间支持当前物理事务内事务日志的全部缓存,进而直接在适配日志包中缓存当前物理事务内的事务日志,避免一个物理事务内的事务日志横跨多个日志包缓存,无需对当前物理事务进行日志解析,提高事务日志的缓存效率;同时在将当前物理事务内的事务日志全部缓存到适配日志包后,会更新适配日志包下的有效日志偏移,后续仅按照该有效日志偏移对适配日志包内的事务日志进行刷盘,避免刷盘后的事务日志出现空洞区域的问题,减少事务日志的缓存空间浪费。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明实施例一提供的一种事务日志的缓存方法的流程图;
图2为本发明实施例二提供的一种事务日志的缓存方法的流程图;
图3为本发明实施例三提供的一种事务日志的缓存装置的结构示意图;
图4为本发明实施例四提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
图1为本发明实施例一提供的一种事务日志的缓存方法的流程图,本实施例可适用于任一种数据库***对事务日志进行缓存的情况中。本实施例提供的一种事务日志的缓存方法可以由本发明实施例提供的事务日志的缓存装置来执行,该装置可以通过软件和/或硬件的方式来实现,并集成在执行本方法的设备中,在本实施例中执行本方法的设备可以是平板电脑、台式机和笔记本等任意一种可以承载有数据库应用的智能终端。
具体的,参考图1,该方法可以包括如下步骤:
S110,如果检测到当前物理事务的提交指令,则确定当前物理事务的适配日志包。
具体的,由于数据库***在数据库事务的执行过程中会不断缓存相应的事务日志,而一个数据库事务通常会包含大量的数据操作,使得存在大量的事务日志需要缓存,此时可能会使日志缓存时存在遗漏,因此数据库***通常会按照数据库事务中各个数据操作之间的联系,先将该数据库事务划分成多个物理事务,每个物理事务内仅存在少量的数据操作,然后以物理事务为单位对事务日志进行缓存,以避免事务日志的缓存遗漏。
同时,在现有的日志缓存区中,通常采用固定内存(如512字节)的日志文件页来缓存事务日志,针对所存在的缓存空间浪费和同一物理事务内的事务日志会横跨多个日志文件页缓存的问题,本实施例预先设定了一种以物理事务为单位,来缓存各个物理事务的事务日志的日志包结构,该日志包的具体结构包括定长包头(64字节)和变长包体(64字节-64兆)两部分,此时通过日志包的包头记录用于描述该日志包的具体属性和特点的元数据信息,通过日志包的包体存储相应物理事务内的各个事务日志的具体内容数据。
示例性的,设定日志包的包头中的元数据可以包括如下的信息:
1)日志包长度:允许日志包存放事务日志的容量上限。
2)有效日志偏移:日志包中当前缓存的全部事务日志所占用的有效容量。
3)加密压缩标记:记录该日志包后续刷盘时是否需要执行加密压缩操作。
4)压缩算法:日志包需要执行加密压缩操作时按位标识压缩算法。
5)压缩级别:日志包需要执行加密压缩操作时所执行压缩的级别。
6)加密后长度:日志包内的事务日志加密后的数据长度。
7)压缩后长度:日志包内的事务日志压缩后的数据长度。
8)日志包序号:数据库***中唯一表示本地日志包的编号,日志包序号根据日志包生成顺序具备连续且递增的特点,用于校验日志包的连续性。
9)日志包内所缓存的事务日志的最小日志序列号、最大日志序列号以及前一个日志包所缓存的事务日志的最大日志序列号,用于校验不同日志包之间缓存的事务日志的连续性,以及同一日志包内缓存的事务日志的连续性;此时,日志序列号是由数据库***自动维护的Bigint类型数值,具有自动递增和全局唯一性的特点。
10)包头循环冗余校验(Cyclic Redundancy Check,CRC)码:针对包头生成的校验码,用于校验包头数据的合法性。
11)数据CRC校验码:针对事务日志的具体内容数据生成的校验码,用于校验事务日志的具体内容数据的合法性。
此时,本实施例采用预先设定的日志包,以物理事务为单位来不断缓存数据库事务中各个物理事务的事务日志时,首先会在数据库事务的执行过程中实时检测该数据库事务中当前运行的物理事务是否准备提交,如果检测到当前物理事务的提交指令,说明当前物理事务中的数据操作已经全部执行完成,此时需要对当前物理事务中的各个事务日志进行缓存,以便后续在数据库***突然断电或重启时可以通过重做相应的事务日志,对数据库***进行恢复。
因此,如果检测到当前物理事务的提交指令,则为了避免同一物理事务下的事务日志横跨不同的日志包缓存,首先需要确定出能够满足当前物理事务下的各个事务日志的缓存需求的适配日志包,此时该适配日志包的剩余缓存空间可以支持当前物理事务内各个事务日志的全部缓存,也就是该适配日志包的剩余缓存空间大于等于当前物理事务内全部事务日志的占用量,该适配日志包的剩余缓存空间可以通过该适配日志包的包头中记载的日志包长度和当前时刻下的有效日志偏移来计算。
示例性的,本实施例中确定当前物理事务的适配日志包,可以具体包括:如果不存在待用日志包或者待用日志包的剩余缓存空间不支持当前物理事务内事务日志的全部缓存,则按照预设日志包结构加载新的日志包,作为当前物理事务的适配日志包;如果待用日志包的剩余缓存空间支持当前物理事务内事务日志的全部缓存,则将待用日志包作为当前物理事务的适配日志包。
具体的,由于数据库***在缓存当前物理事务的前一物理事务提交时,也会采用对应日志包来缓存该前一物理事务内的事务日志,此时前一物理事务内的事务日志完成缓存后,该日志包会存在两种情况:1)该日志包在前一物理事务内的事务日志完成缓存后直接刷盘进行资源释放,使得当前物理事务在提交后不存在可用的待用日志包;2)该日志包在前一物理事务内的事务日志完成缓存后还存在一定剩余缓存空间来缓存接下来的物理事务内的事务日志,此时将该日志包作为本实施例中的待用日志包。因此,本实施例在检测到当前物理事务的提交指令时,首先会判断当前是否存在待用日志包,如果不存在待用日志包,或者,如果存在待用日志包,但待用日志包的剩余缓存空间不支持当前物理事务内事务日志的全部缓存,说明对于当前物理事务内的事务日志,需要申请一个新的日志包来缓存,此时按照预先定义的日志包结构可以在数据库***中重新加载一个新的日志包,作为当前物理事务的适配日志包;但是如果存在待用日志包,且待用日志包的剩余缓存空间支持当前物理事务内事务日志的全部缓存,说明在该待用日志包的剩余缓存空间内能够缓存当前物理事务内的全部事务日志,则直接该待用日志包作为当前物理事务的适配日志包,保证当前物理事务内的事务日志能够在同一日志包内缓存,避免一个物理事务内的事务日志横跨多个日志包缓存,无需对当前物理事务进行日志解析,提高事务日志的缓存效率。
此外,如果待用日志包的剩余缓存空间不支持当前物理事务内事务日志的全部缓存,而重新加载了一个新的日志包来缓存当前物理事务内的各个事务日志,此时为了保证各个日志包中缓存的事务日志连续性,需要对该待用日志包内的事务日志进行刷盘处理,从而释放该待用日志包的资源,避免该待用日志包对当前物理事务之后的其他物理事务内的事务日志进行缓存,造成日志缓存不连续的问题。
S120,在适配日志包中缓存当前物理事务内的事务日志,并更新适配日志包下的有效日志偏移,以按照该有效日志偏移对适配日志包内的事务日志进行刷盘。
可选的,在确定出当前物理事务的适配日志包之后,将当前物理事务内的各个事务日志不断写入到该适配日志包中,使得在该适配日志包中缓存当前物理事务内的事务日志;同时,由于适配日志包在缓存了当前物理事务内的各个事务日志之后,该适配日志包内事务日志所占用的有效容量也会相应变化,因此本实施例还会根据当前物理事务内全部事务日志的占用量来更新该适配日志包下的有效日志偏移,也就是在未缓存当前物理事务内的事务日志之前的原有有效日志偏移的基础上,加上本次缓存的当前物理事务内全部事务日志的占用量,作为该适配日志包下缓存当前物理事务内的事务日志之后的有效日志偏移,后续仅需按照该有效日志偏移对适配日志包内的事务日志进行刷盘,无需读取适配日志包处于该有效日志偏移之外的其他内容,在保证适配日志包内事务日志的刷盘准确性的基础上,避免刷盘后的事务日志出现空洞区域的问题,减少事务日志的缓存空间浪费。
需要说明的是,为了保证事务日志的缓存连续性,本实施例在适配日志包中缓存当前物理事务内的事务日志之时,还可以包括:根据事务日志的日志序列号校验适配日志包内的日志连续性。
具体的,由于适配日志包的包头中会记录该适配日志包内所缓存的事务日志的最小日志序列号、最大日志序列号以及前一个日志包所缓存的事务日志的最大日志序列号,因此可以根据前一个日志包所缓存的事务日志的最大日志序列号和该适配日志包内所缓存的事务日志的最小日志序列号,来校验该适配日志包内缓存的第一个事务日志与前一日志包内缓存的最后一个事务日志之间是否连续,也可以根据该适配日志包内所缓存的事务日志的最大日志序列号和本次缓存的当前物理事务内的各个事务日志的日志序列号,来校验本次缓存的当前物理事务内各个事务日志在该适配日志包中是否连续,同时也可以通过各个日志包的包头中记录的日志包序号来校验日志包之间的连续性,使得本实施例中对于物理事务的事务日志缓存可以采用预写式日志(Write Ahead Logging,WAL)的方式,此时在事务日志缓存时,该事务日志对应修改的数据页还没有写入到磁盘,因此如果在事务日志的缓存过程中,发现不连续的日志包,则可以直接丢弃,此时不会影响到该数据库数据的正确性。
本实施例提供的技术方案,通过预先设定的日志包,以物理事务为单位进行事务日志的缓存,如果检测到当前物理事务的提交指令,则确定当前物理事务的适配日志包,此时该适配日志包的剩余缓存空间支持当前物理事务内事务日志的全部缓存,进而直接在适配日志包中缓存当前物理事务内的事务日志,避免一个物理事务内的事务日志横跨多个日志包缓存,无需对当前物理事务进行日志解析,提高事务日志的缓存效率;同时在将当前物理事务内的事务日志全部缓存到适配日志包后,会更新适配日志包下的有效日志偏移,后续仅按照该有效日志偏移对适配日志包内的事务日志进行刷盘,避免刷盘后的事务日志出现空洞区域的问题,减少事务日志的缓存空间浪费。
实施例二
图2为本发明实施例二提供的一种事务日志的缓存方法的流程图。本实施例是在上述实施例的基础上进行优化。可选的,本实施例中主要对该适配日志包中缓存的事务日志的具体刷盘过程进行详细的解释说明。
可选的,如图2所示,本实施例具体可以包括如下步骤:
S210,如果检测到当前物理事务的提交指令,则确定当前物理事务的适配日志包。
S220,在适配日志包中缓存当前物理事务内的事务日志,并更新适配日志包下的有效日志偏移。
S230,如果适配日志包的剩余缓存空间不支持下一物理事务内事务日志的全部缓存,或者检测到当前物理事务所在的数据库事务的提交指令,则按照适配日志包下的有效日志偏移对适配日志包内的事务日志进行刷盘。
可选的,在适配日志包中缓存当前物理事务内的事务日志之后,该适配日志包的剩余缓存空间会等待下一物理事务提交时事务日志的缓存,在检测到下一物理事务的提交指令时,如果该适配日志包的剩余缓存空间不支持下一物理事务内事务日志的全部缓存,则需要为下一物理事务重新申请一个新的日志包来进行缓存,那么为了保证各个日志包之间事务日志缓存的连续性,则要求该适配日志包不再缓存其他物理事务内的事务日志,因此在为下一物理事务重新申请新的日志包时,还会按照该适配日志包下缓存当前物理事务内的各个事务日志之后更新的有效日志偏移,对该适配日志包内的事务日志进行刷盘,并释放该适配日志包内的各项资源,从而还给数据库***,便于后续作为新的日志包进行事务日志缓存;另一方面,由于在当前物理事务所在的数据库事务中,该当前物理事务可能为最后一个物理事务,因此在当前物理事务提交后,其所在的数据库事务也会执行相应的提交操作,此时如果检测到当前物理事务所在的数据库事务的提交指令,说明需要对该数据库事务所涉及的各个物理事务下的事务日志进行刷盘,而在加载出该适配日志包时,该适配日志包之前的日志包均已经完成日志刷盘,因此仅需要按照适配日志包下的有效日志偏移对适配日志包内的事务日志进行刷盘,无需读取适配日志包处于该有效日志偏移之外的其他内容,在保证适配日志包内事务日志的刷盘准确性的基础上,避免刷盘后的事务日志出现空洞区域的问题,减少事务日志的缓存空间浪费。
此外,由于适配日志包的包头会记录对应的加密压缩标记以及所采用的压缩算法和压缩级别等信息,以指示该适配日志包在执行日志刷盘之前,是否需要进行加密压缩;因此,本实施例在按照适配日志包下的有效日志偏移对适配日志包内的事务日志进行刷盘之前,还可以包括:查找适配日志包下的加密压缩标识;如果加密压缩标识指示适配日志包为待加密压缩包,则采用预设加密压缩算法对适配日志包进行加密压缩。
具体的,在按照适配日志包下的有效日志偏移对适配日志包内的事务日志进行刷盘之前,首先在该适配日志包的包头中查找出该适配日志包下的加密压缩标识,该加密压缩标识用于指示该适配日志包是否需要执行加密压缩操作,例如如果加密压缩标识为1,则说明该适配日志包需要执行加密压缩操作,如果加密压缩标识为0,则说明该适配日志包不需要执行加密压缩操作。
进一步的,如果该适配日志包下的加密压缩标识指示该适配日志包为待加密压缩包,也就是该适配日志包需要执行加密压缩操作,则采用该适配日志包的包头中记载的压缩算法和压缩级别等信息下指定的预设加密压缩算法对该适配日志包进行加密压缩,在完成加密压缩操作后,再按照适配日志包下的有效日志偏移对适配日志包内的事务日志进行刷盘。而如果该适配日志包下的加密压缩标识指示该适配日志包为非加密压缩包,也就是该适配日志包不需要执行加密压缩操作,则直接按照适配日志包下的有效日志偏移对适配日志包内的事务日志进行刷盘。示例性的,在该适配日志包需要执行加密压缩操作时,首先将该适配日志包添加到预先设置的任务处理线程中,该任务处理线程在检测到存在待执行加密压缩操作的日志包时,将该适配日志包取出来执行对应的加密压缩操作;此时,以日志包为单位进行加密压缩操作,提高了加密压缩操作的粒度和整体性能。
S240,释放适配日志包。
可选的,在按照适配日志包下的有效日志偏移对适配日志包内的事务日志进行刷盘之后,该适配日志包的缓存周期已经结束,此时可以释放该适配日志包的各项资源,进而将该适配日志包还给数据库***,以便后续将该适配日志包构建为新的日志包进行之后的事务日志缓存,从而提高事务日志的缓存性能。
本实施例提供的技术方案,通过预先设定的日志包,以物理事务为单位进行事务日志的缓存,如果检测到当前物理事务的提交指令,则确定当前物理事务的适配日志包,此时该适配日志包的剩余缓存空间支持当前物理事务内事务日志的全部缓存,进而直接在适配日志包中缓存当前物理事务内的事务日志,避免一个物理事务内的事务日志横跨多个日志包缓存,无需对当前物理事务进行日志解析,提高事务日志的缓存效率;同时在将当前物理事务内的事务日志全部缓存到适配日志包后,会更新适配日志包下的有效日志偏移,后续仅按照该有效日志偏移对适配日志包内的事务日志进行刷盘,避免刷盘后的事务日志出现空洞区域的问题,减少事务日志的缓存空间浪费。
实施例三
图3为本发明实施例三提供的一种事务日志的缓存装置的结构示意图,如图3所示,该装置可以包括:
适配包确定模块310,用于如果检测到当前物理事务的提交指令,则确定当前物理事务的适配日志包,该适配日志包的剩余缓存空间支持所述当前物理事务内事务日志的全部缓存;
事务日志缓存模块320,用于在适配日志包中缓存当前物理事务内的事务日志,并更新适配日志包下的有效日志偏移,以按照该有效日志偏移对适配日志包内的事务日志进行刷盘。
本实施例提供的技术方案,通过预先设定的日志包,以物理事务为单位进行事务日志的缓存,如果检测到当前物理事务的提交指令,则确定当前物理事务的适配日志包,此时该适配日志包的剩余缓存空间支持当前物理事务内事务日志的全部缓存,进而直接在适配日志包中缓存当前物理事务内的事务日志,避免一个物理事务内的事务日志横跨多个日志包缓存,无需对当前物理事务进行日志解析,提高事务日志的缓存效率;同时在将当前物理事务内的事务日志全部缓存到适配日志包后,会更新适配日志包下的有效日志偏移,后续仅按照该有效日志偏移对适配日志包内的事务日志进行刷盘,避免刷盘后的事务日志出现空洞区域的问题,减少事务日志的缓存空间浪费。
进一步的,上述适配包确定模块310,可以具体用于:
如果不存在待用日志包或者待用日志包的剩余缓存空间不支持当前物理事务内事务日志的全部缓存,则按照预设日志包结构加载新的日志包,作为当前物理事务的适配日志包;
如果待用日志包的剩余缓存空间支持当前物理事务内事务日志的全部缓存,则将当前待用日志包作为当前物理事务的适配日志包。
进一步的,上述事务日志的缓存装置,还可以包括:
日志刷盘模块,用于如果适配日志包的剩余缓存空间不支持下一物理事务内事务日志的全部缓存,或者检测到当前物理事务所在的数据库事务的提交指令,则按照适配日志包下的有效日志偏移对适配日志包内的事务日志进行刷盘。
进一步的,上述事务日志的缓存装置,还可以包括:
日志包压缩模块,用于查找适配日志包下的加密压缩标识;如果加密压缩标识指示适配日志包为待加密压缩包,则采用预设加密压缩算法对适配日志包进行加密压缩。
进一步的,上述事务日志的缓存装置,还可以包括:
日志包释放模块,用于释放适配日志包。
进一步的,上述事务日志的缓存装置,还可以包括:
日志包校验模块,用于根据事务日志的日志序列号校验适配日志包内的日志连续性。
本实施例提供的事务日志的缓存装置可适用于上述任意实施例提供的事务日志的缓存方法,具备相应的功能和有益效果。
实施例四
图4为本发明实施例四提供的一种设备的结构示意图。如图4所示,该设备包括处理器40、存储装置41和通信装置42;设备中处理器40的数量可以是一个或多个,图4中以一个处理器40为例;设备的处理器40、存储装置41和通信装置42可以通过总线或其他方式连接,图4中以通过总线连接为例。
存储装置41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的事务日志的缓存方法对应的模块。处理器40通过运行存储在存储装置41中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的事务日志的缓存方法。
存储装置41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
通信装置42可用于实现设备间网络连接或者移动数据连接。
本实施例提供的一种设备可用于执行上述任意实施例提供的事务日志的缓存方法,具备相应的功能和有益效果。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述任意实施例中的事务日志的缓存方法。
该方法具体可以包括:
如果检测到当前物理事务的提交指令,则确定当前物理事务的适配日志包,该适配日志包的剩余缓存空间支持当前物理事务内事务日志的全部缓存;
在适配日志包中缓存当前物理事务内的事务日志,并更新适配日志包下的有效日志偏移,以按照该有效日志偏移对适配日志包内的事务日志进行刷盘。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的事务日志的缓存方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述事务日志的缓存装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种事务日志的缓存方法,其特征在于,包括:
如果检测到当前物理事务的提交指令,则确定所述当前物理事务的适配日志包,所述适配日志包的剩余缓存空间支持所述当前物理事务内事务日志的全部缓存;
在所述适配日志包中缓存所述当前物理事务内的事务日志,并更新所述适配日志包下的有效日志偏移,以按照该有效日志偏移对所述适配日志包内的事务日志进行刷盘。
2.根据权利要求1所述的方法,其特征在于,所述确定所述当前物理事务的适配日志包,包括:
如果不存在待用日志包或者待用日志包的剩余缓存空间不支持所述当前物理事务内事务日志的全部缓存,则按照预设日志包结构加载新的日志包,作为所述当前物理事务的适配日志包;
如果待用日志包的剩余缓存空间支持所述当前物理事务内事务日志的全部缓存,则将所述待用日志包作为所述当前物理事务的适配日志包。
3.根据权利要求1所述的方法,其特征在于,在更新所述适配日志包下的有效日志偏移之后,还包括:
如果所述适配日志包的剩余缓存空间不支持下一物理事务内事务日志的全部缓存,或者检测到所述当前物理事务所在的数据库事务的提交指令,则按照所述适配日志包下的有效日志偏移对所述适配日志包内的事务日志进行刷盘。
4.根据权利要求3所述的方法,其特征在于,在按照所述适配日志包下的有效日志偏移对所述适配日志包内的事务日志进行刷盘之前,还包括:
查找所述适配日志包下的加密压缩标识;
如果所述加密压缩标识指示所述适配日志包为待加密压缩包,则采用预设加密压缩算法对所述适配日志包进行加密压缩。
5.根据权利要求3所述的方法,其特征在于,在按照所述适配日志包下的有效日志偏移对所述适配日志包内的事务日志进行刷盘之后,还包括:
释放所述适配日志包。
6.根据权利要求1-5任一项所述的方法,其特征在于,在所述适配日志包中缓存所述当前物理事务内的事务日志之时,还包括:
根据事务日志的日志序列号校验所述适配日志包内的日志连续性。
7.一种事务日志的缓存装置,其特征在于,包括:
适配包确定模块,用于如果检测到当前物理事务的提交指令,则确定所述当前物理事务的适配日志包,所述适配日志包的剩余缓存空间支持所述当前物理事务内事务日志的全部缓存;
事务日志缓存模块,用于在所述适配日志包中缓存所述当前物理事务内的事务日志,并更新所述适配日志包下的有效日志偏移,以按照该有效日志偏移对所述适配日志包内的事务日志进行刷盘。
8.根据权利要求7所述的装置,其特征在于,所述适配包确定模块,具体用于:
如果不存在待用日志包或者待用日志包的剩余缓存空间不支持所述当前物理事务内事务日志的全部缓存,则按照预设日志包结构加载新的日志包,作为所述当前物理事务的适配日志包;
如果待用日志包的剩余缓存空间支持所述当前物理事务内事务日志的全部缓存,则将所述当前待用日志包作为所述当前物理事务的适配日志包。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的事务日志的缓存方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的事务日志的缓存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010505738.9A CN111694806B (zh) | 2020-06-05 | 2020-06-05 | 一种事务日志的缓存方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010505738.9A CN111694806B (zh) | 2020-06-05 | 2020-06-05 | 一种事务日志的缓存方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111694806A true CN111694806A (zh) | 2020-09-22 |
CN111694806B CN111694806B (zh) | 2023-10-27 |
Family
ID=72479474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010505738.9A Active CN111694806B (zh) | 2020-06-05 | 2020-06-05 | 一种事务日志的缓存方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111694806B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256485A (zh) * | 2020-10-30 | 2021-01-22 | 网易(杭州)网络有限公司 | 数据备份方法、装置、介质和计算设备 |
CN112306648A (zh) * | 2020-10-29 | 2021-02-02 | 平安科技(深圳)有限公司 | 事务调用方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090106758A1 (en) * | 2007-10-19 | 2009-04-23 | Dominic Giampaolo | File system reliability using journaling on a storage medium |
CN102945278A (zh) * | 2012-11-09 | 2013-02-27 | 华为技术有限公司 | 一种数据库记录重做日志的方法和装置 |
US20160224588A1 (en) * | 2015-01-29 | 2016-08-04 | Sk Hynix Memory Solutions Inc. | Data integrity and loss resistance in high performance and high capacity storage deduplication |
-
2020
- 2020-06-05 CN CN202010505738.9A patent/CN111694806B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090106758A1 (en) * | 2007-10-19 | 2009-04-23 | Dominic Giampaolo | File system reliability using journaling on a storage medium |
CN102945278A (zh) * | 2012-11-09 | 2013-02-27 | 华为技术有限公司 | 一种数据库记录重做日志的方法和装置 |
US20160224588A1 (en) * | 2015-01-29 | 2016-08-04 | Sk Hynix Memory Solutions Inc. | Data integrity and loss resistance in high performance and high capacity storage deduplication |
Non-Patent Citations (1)
Title |
---|
徐震;张敏;: "核心化多级安全数据库***未决提交事务日志写出依赖研究" * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306648A (zh) * | 2020-10-29 | 2021-02-02 | 平安科技(深圳)有限公司 | 事务调用方法、装置、电子设备及存储介质 |
CN112256485A (zh) * | 2020-10-30 | 2021-01-22 | 网易(杭州)网络有限公司 | 数据备份方法、装置、介质和计算设备 |
CN112256485B (zh) * | 2020-10-30 | 2023-08-04 | 网易(杭州)网络有限公司 | 数据备份方法、装置、介质和计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111694806B (zh) | 2023-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108431783B (zh) | 访问请求处理方法、装置及计算机*** | |
CN107491523B (zh) | 存储数据对象的方法及装置 | |
CN104462225B (zh) | 一种数据读取的方法、装置及*** | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
CN107665095B (zh) | 存储器空间管理的设备、方法及可读存储介质 | |
US10963377B2 (en) | Compressed pages having data and compression metadata | |
CN111694806B (zh) | 一种事务日志的缓存方法、装置、设备和存储介质 | |
WO2017113211A1 (zh) | 访问请求处理方法、装置及计算机*** | |
CN111831691B (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
US10430115B2 (en) | System and method for optimizing multiple packaging operations in a storage system | |
CN111610936B (zh) | 一种对象存储平台以及对象聚合方法、装置和服务器 | |
CN115858409A (zh) | 一种数据预取方法、计算节点和存储*** | |
CN101459599B (zh) | 一种实现缓存数据访问与加载并发进行的方法及*** | |
CN111126619B (zh) | 一种机器学习方法与装置 | |
CN112000623A (zh) | 一种元数据的存取方法、装置和计算机可读存储介质 | |
CN111858393A (zh) | 内存页面管理方法、内存页面管理装置、介质与电子设备 | |
CN111611223A (zh) | 非易失性数据的访问方法、***、电子设备和介质 | |
CN116701246A (zh) | 一种提升缓存带宽的方法、装置、设备及存储介质 | |
CN109828720B (zh) | 数据存储方法、装置、服务器和存储介质 | |
CN117056363B (zh) | 数据缓存方法、***、设备以及存储介质 | |
CN117009439B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN112162950B (zh) | 基于文件***的数据处理方法、装置和计算机设备 | |
US12010214B2 (en) | Hash based key value to block translation methods and systems | |
US20230045119A1 (en) | Data access method and apparatus |
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 |