CN113032292B - 存储空间回收方法、数据读取方法及装置 - Google Patents
存储空间回收方法、数据读取方法及装置 Download PDFInfo
- Publication number
- CN113032292B CN113032292B CN202110543878.XA CN202110543878A CN113032292B CN 113032292 B CN113032292 B CN 113032292B CN 202110543878 A CN202110543878 A CN 202110543878A CN 113032292 B CN113032292 B CN 113032292B
- Authority
- CN
- China
- Prior art keywords
- transaction
- target
- data block
- data
- data blocks
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了存储空间回收方法、数据读取方法及装置。其中,一种存储空间回收方法,包括:当检测到任一第一类数据块满足第一回收条件时,将满足第一回收条件的第一类数据块进行空间释放;当检测到关于多个第一类数据块的空间占用率大于预定占用率阈值时,从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块;第二回收条件包括所存储指定内容的数量为第一数量,且所存储指定内容表征的最大的提交时间戳不小于最小活跃读时间戳;将各个目标数据块所存储的指定内容写入到指定磁盘中,并对各个目标数据块进行空间释放。通过本方案可以对数据块进行及时回收。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及存储空间回收方法、数据读取方法及装置。
背景技术
外部读一致性是分布式事务的核心的话题,其是指事务的可见顺序遵守外部可见的提交顺序。为了实现外部读一致性,中心授时应用而生,即,TM(Transaction Manager,事务管理器)在事务开启时到TSO(Time Stamp Oracle 时钟服务)节点,即中心授时节点,获取事务的开启时间戳,在事务提交阶段从TSO节点中获取事务的提交时间戳。
相关技术中,为了降低IO开销和锁开销,适用于 MVCC(Multi-VersionConcurrency Control ,多版本并发控制)机制下的数据写入流程为:分布式系统中的资源服务器在写事务的执行过程中,将写事务的事务ID写入目标版本数据中,目标版本数据是该写事务所针对行记录的新的版本数据;在写事务执行完毕时,将目标版本数据进行提交处理,并将能够表征写事务的提交时间戳的指定内容,写入到内存中多个数据块中的一个数据块。
这样,后续在数据读取时,可以基于数据块所存储的指定内容,来确定行记录的版本数据的提交时间戳,以判定是否对读事务可见。并且,为了保证内存空间的有效利用,可以基于最小活跃读时间戳,即当前执行或待执行的读事务的开启时间戳的最小值,来进行数据块的空间回收。
但是,由于某些读事务可能属于长事务,即持续时长在小时级别的事务,因此,最小活跃读时间戳可能长时间保持不变。那么,按照上述的回收方式,可能导致数据块无法被及时回收,最终为存储空间的合理预留带来很大难度。
发明内容
本发明实施例的目的在于提供存储空间回收方法及装置,以实现对数据块进行及时回收的目的;另外,本发明实施例还提供了数据读取方法及装置,以实现对行记录的版本数据的有效读取。具体技术方案如下:
第一方面,本发明实施例提供了一种存储空间回收方法,应用于资源服务器;所述资源服务器的内存中包含多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的指定内容,每一写事务对应的指定内容能够表征该写事务所具有的提交时间戳;所述方法包括:
当检测到任一第一类数据块满足第一回收条件时,将满足所述第一回收条件的第一类数据块进行空间释放;其中,所述第一回收条件包括所存储指定内容的数量为所述第一数量,且所存储指定内容表征的最大的提交时间戳小于最小活跃读时间戳;
当检测到关于所述多个第一类数据块的空间占用率大于预定占用率阈值时,从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块;其中,所述第二回收条件包括所存储指定内容的数量为所述第一数量,且所存储指定内容表征的最大的提交时间戳不小于最小活跃读时间戳;
将各个目标数据块所存储的指定内容写入到指定磁盘中,并对各个目标数据块进行空间释放。
第二方面,本发明实施例提供了一种基于第一方面所述的存储空间回收方法的数据读取方法,所述数据读取方法包括:
当接收到读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,所述目标行记录为所述读事务所针对的行记录;
针对每一目标事务ID,若该目标事务ID不大于第一水位线,则确定记录有该目标事务ID的版本数据为待利用的版本数据;其中,所述第一水位线为第一指定内容所对应写事务的事务ID中的最大值,所述第一指定内容为满足第一回收条件的第一类数据块所存储的指定内容;
针对每一目标事务ID,若该目标事务ID大于第一水位线,则确定该目标事务ID与第二水位线的大小关系,按照与所述大小关系相匹配的提交时间戳查找方式,查找该目标事务ID对应的提交时间戳,若所查找到的提交时间戳小于所述读事务的开启时间戳,确定记录有该目标事务ID的版本数据为待利用的版本数据;其中,所述第二水位线为第二指定内容所对应写事务的事务ID中的最大值,所述第二指定内容为各个目标数据块所存储的指定内容;
基于所确定的待利用版本数据,确定所述读事务的响应结果。
第三方面,本发明实施例提供了一种存储空间回收装置,应用于资源服务器;所述资源服务器的内存中包含多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的指定内容,每一写事务对应的指定内容能够表征该写事务所具有的提交时间戳;所述装置包括:
第一处理模块,用于当检测到任一第一类数据块满足第一回收条件时,将满足所述第一回收条件的第一类数据块进行空间释放;其中,所述第一回收条件包括所存储指定内容的数量为所述第一数量,且所存储指定内容表征的最大的提交时间戳小于最小活跃读时间戳;
第二处理模块,用于当检测到关于所述多个第一类数据块的空间占用率大于预定占用率阈值时,从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块;其中,所述第二回收条件包括所存储指定内容的数量为所述第一数量,且所存储指定内容表征的最大的提交时间戳不小于最小活跃读时间戳;
第三处理模块,用于将各个目标数据块所存储的指定内容写入到指定磁盘中,并对各个目标数据块进行空间释放。
第四方面,本发明实施例提供了一种基于第一方面所述的存储空间回收方法的数据读取装置,所述装置包括:
获取模块,用于当接收到读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,所述目标行记录为所述读事务所针对的行记录;
第五处理模块,用于针对每一目标事务ID,若该目标事务ID不大于第一水位线,则确定记录有该目标事务ID的版本数据为待利用的版本数据;其中,所述第一水位线为第一指定内容所对应写事务的事务ID中的最大值,所述第一指定内容为满足第一回收条件的第一类数据块所存储的指定内容;
第六处理模块,用于针对每一目标事务ID,若该目标事务ID大于第一水位线,则确定该目标事务ID与第二水位线的大小关系,按照与所述大小关系相匹配的提交时间戳查找方式,查找该目标事务ID对应的提交时间戳,若所查找到的提交时间戳小于所述读事务的开启时间戳,确定记录有该目标事务ID的版本数据为待利用的版本数据;其中,所述第二水位线为第二指定内容所对应写事务的事务ID中的最大值,所述第二指定内容为各个目标数据块所存储的指定内容;
确定模块,用于基于所确定的待利用版本数据,确定所述读事务的响应结果。
第五方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面或第二方面所述的方法步骤。
第六方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面或第二方面所述的方法步骤。
本发明实施例有益效果:
本发明实施例所提供的存储空间回收方法中,不但考虑满足第一回收条件的第一类数据块进行空间释放,而且,在关于多个第一类数据块的空间占用率大于预定占用率阈值时,对于满足第二回收条件的第一类数据块进行内容转存以及空间释放。可见,本方案不但基于最小活跃读时间戳,来进行数据块的空间回收,而且即便长读事务的存在导致最小活跃读时间戳长期保持不变,也能够基于第二回收条件来使得被全部占用的第一类数据块被回收,达到推进最小活跃读时间戳的效果,因此,通过本方案可以对数据块进行及时回收。
本发明实施例所提供的数据读取方法中,当接收到读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;并基于目标事务ID与第一水位线和第二水位线的大小关系,来确定出记录有目标事务ID的版本数据是否为待利用的版本数据,从而基于所确定的待利用版本数据,确定读事务的响应结果。可见,通过本方案可以对行记录的版本数据的有效读取。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明实施例所提供的存储空间回收方法的流程图;
图2(a)为资源管理器、事务管理器和中心授时节点的交互过程的示意图;
图2(b)为本发明实施例中第一类存储块和第二类存储块的存储结构示意图;
图2(c)为本发明实施例中第一类存储块和第二类存储块的存储结构示意图;
图2(d)为本发明实施例所提供的第一类存储块的存储结构示意图;
图3为本发明实施例所提供的数据写入过程的流程图;
图4为本发明实施例所提供的数据读取方法的流程图;
图5为本发明实施例所提供的存储空间回收装置的结构示意图;
图6为本发明实施例所提供的数据读取装置的结构示意图;
图7为本发明实施例所提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
下面首先对本发明实施例所提供的存储空间回收方法进行介绍。
本发明实施例所提供的存储空间回收方法应用于资源服务器,具体的,该存储空间回收方法的执行主体可以为资源服务器中的RM(Resource Manager,资源管理器)。该资源服务器为数据存储系统中用于资源管理的服务器,并且,该数据存储系统还可以包括:事务管理服务器和TSO(Time Stamp Oracle 时钟服务)节点,其中,事务管理服务器中设置有事务管理器。
在采用中心授时时,资源管理器、事务管理器和TSO节点的交互过程可以如图2(a)所示,其中,事务管理器TM在生成写事务时,向TSO节点请求该写事务的开启时间戳,即Getstart_ts;通过SQL1和SQL2等SQL语句向RM下发写事务,SQL语句中携带有开启时间戳start_ts;写事务在完成执行阶段后,可以进入提交阶段,而在该写事务的提交阶段之前,TM可以先向TSO节点请求该写事务的提交时间戳,即Get commit_ts,然后基于提交时间戳commit_ts来进行写事务的提交。其中,图2(a)中的Xa_perpare用于表征写事务进入执行阶段,而Xa_Commit用于表征写事务进入提交阶段。而事务管理器在生成读事务时,向中心授时节点请求该读事务的开启时间戳。可以理解的是,开启时间戳和提交时间戳均属于逻辑时间戳,中心授时节点生成开启时间戳和提交时间戳的具体方式,本发明实施例不做限定。
并且,本发明实施例所提供的方案为适用于MVCC(Multi-Version ConcurrencyControl ,多版本并发控制)机制下数据处理流程。在该种机制下,数据库中的每条行记录均存在至少一个版本数据,每一版本数据是通过执行写事务所形成的数据。
另外,本发明实施例中所涉及的事务可以为悲观事务,所谓悲观事务具体指在事务处理过程中采用加锁方式以及数据写入公共数据库的方式的事务;与悲观事务相对应的乐观事务是指未采用加锁方式以及数据写入缓存的方式的事务。并且,写事务的处理过程分为两个阶段:执行阶段和提交阶段。其中,执行阶段为写事务的执行过程,用于对写事务所针对行记录的版本数据进行变更,从而形成新的版本数据;而写事务的提交阶段为将写事务所针对行记录的新的版本数据提交到数据库,从而持久化处理。
可以理解的是,不同的应用场景下,事务持续时间的级别不同,例如:在oltp场景下,事务持续时间在秒级,一般在10s左右,而在RR((Repeated Read,可重复读)隔离级别中,会存在大事务场景,即一个长事务持续了几个小时。其中,oltp(On-Line TransactionProcessing,联机事务处理过程)场景,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。而对于RR隔离级别而言,RR隔离级别和 RC(ReadCommitted,读提交)隔离级别的唯一的区别在于“是否可重复读”:在一个事务执行过程中,它能不能读到其他已提交事务对数据的更新,如果能读到数据变化,就是“不可重复读”,否则就是“可重复读”。对于RR隔离级别而言,它不但解决“读脏”问题,还解决了“读幻影行”问题,同一个事务里,连续相同的read读到相同的结果集。可以理解的是,长事务的特性至少可以包括:长事务较少,且低频访问。
正是由于长读事务的存在,即持续较长时间的读事务的存在,可能导致最小活跃读时间戳长时间保持不变,影响数据块的及时回收,这样为存储空间的合理预留带来很大难度,即为内存空间的合理预留带来很大难度。其中,最小活跃读时间戳,即为当前执行或待执行的读事务的开启时间戳的最小值。
为了实现对数据块进行及时回收的目的,本发明实施例提供了存储空间回收方法,应用于资源服务器;资源服务器的内存中包含多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的指定内容,每一写事务对应的指定内容能够表征该写事务所具有的提交时间戳;所述方法包括:
当检测到任一第一类数据块满足第一回收条件时,将满足第一回收条件的第一类数据块进行空间释放;其中,第一回收条件包括所存储指定内容的数量为第一数量,且所存储指定内容表征的最大的提交时间戳小于最小活跃读时间戳;
当检测到关于多个第一类数据块的空间占用率大于预定占用率阈值时,从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块;其中,第二回收条件包括所存储指定内容的数量为第一数量,且所存储指定内容表征的最大的提交时间戳不小于最小活跃读时间戳;
将各个目标数据块所存储的指定内容写入到指定磁盘中,并对各个目标数据块进行空间释放。
本发明实施例所提供的存储空间回收方法中,不但考虑满足第一回收条件的第一类数据块进行空间释放,而且,在关于多个第一类数据块的空间占用率大于预定占用率阈值时,对于满足第二回收条件的第一类数据块进行内容转存以及空间释放。可见,本方案不但基于最小活跃读时间戳,来进行数据块的空间回收,而且即便长读事务的存在导致最小活跃读时间戳长期保持不变,也能够基于第二回收条件来使得被全部占用的第一类数据块被回收,达到推进最小活跃读时间戳的效果,因此,通过本方案可以对数据块进行及时回收。
下面结合附图,对本发明实施例所提供的存储空间回收方法进行详细介绍。
如图1所示,本发明实施例提供了一种存储空间回收方法,应用于资源服务器,该回收方法可以包括如下步骤:
S101,当检测到任一第一类数据块满足第一回收条件时,将满足第一回收条件的第一类数据块进行空间释放;
其中,第一回收条件包括所存储指定内容的数量为第一数量,且所存储指定内容表征的最大的提交时间戳小于最小活跃读时间戳。
其中,该资源服务器的内存中包含多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的指定内容,每一写事务对应的指定内容能够表征该写事务所具有的提交时间戳。这样,后续在数据读取时,可以基于第一类数据块所存储指定内容,来确定行记录的版本数据的提交时间戳,以确定是否对读事务可见,从而通过以空间换时间的方式,避免在行记录的版本数据中写入提交时间戳时,所产生的IO开销和锁开销。需要强调的是,各个第一类数据块的存储区域可以被称为预定热区空间,在写事务处理过程中,关于写事务对应的指定内容写入到预定热区空间中。
为了方便数据写入,在一种可选的实现方式中,资源服务器的内存中包含块号连续的多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的指定内容。并且,示例性的,每一写事务对应的指定内容包括:关于该写事务的事务ID和提交时间戳的映射关系;或者,该写事务的提交时间戳。其中,每一写事务对应的指定内容在该写事务的数据写入过程中进行存储,为了布局清楚以及方案清楚,后续介绍每一写事务的数据写入过程。
基于上述的提交时间戳的存储方式,为了回收存储空间,本实施例中,首先可以预先设定第一回收条件,该第一回收条件是基于最小活跃读时间戳所设定的,其中,最小活跃读时间戳,即为当前执行或待执行的读事务的开启时间戳的最小值。具体而言,第一回收条件包括所存储指定内容的数量为第一数量,且所存储指定内容表征的最大的提交时间戳小于最小活跃读时间戳。可以理解的是,针对任一第一类数据块而言,若该第一类数据块所存储的指定内容的数量为第一数量时,可以判定该第一类数据块的存储区域被全部占用,即该第一类数据块被写满;并且,由于在任一第一类数据块被写满后,如果所存储指定内容表征的最大的提交时间戳小于最小活跃读时间戳,则表明该第一类数据块中所涉及到的各个写事务对应的版本数据,对于任一读事务均可见,这样,在数据读取时,若读事务访问该数据块中所涉及到的某一事务ID对应的版本数据,无需查找该第一类数据块中记录的指定内容,即可直接判定该某一事务ID对应的版本数据对于读事务可见。因此,对于满足第一回收条件的第一类数据块,可以直接进行空间释放。
也就是说,针对满足第一回收条件的每一第一类数据块而言,该第一类数据块所存储指定内容表征的提交时间戳的最大值小于最小活跃读时间戳,那么,正在执行的或待执行的任一读事务的开启时间戳,均大于该第一类数据块所存储指定内容表征的提交时间戳的最大值。因此,满足第一回收条件的第一类数据块所涉及到各个写事务对应的版本数据,对正在执行的或待执行的任一读事务均是可见。那么,可以将满足第一回收条件的第一类数据块确定为可回收的第一类数据块,从而合理利用存储空间,避免空间浪费。
S102,当检测到关于多个第一类数据块的空间占用率大于预定占用率阈值时,从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块;
其中,第二回收条件包括所存储指定内容的数量为第一数量,且所存储指定内容表征的最大的提交时间戳不小于最小活跃读时间戳;
S103,将各个目标数据块所存储的指定内容写入到指定磁盘中,并对各个目标数据块进行空间释放。
考虑到最小活跃读时间戳可能由于长读事务的存在,保持长期不变,造成存储空间无法被及时回收,因此,本实施例中,增设第二回收条件。这样,当检测到关于多个第一类数据块的空间占用率大于预定占用率阈值时,表明用于存储指定内容的内存空间存在不足的风险,因此,从满足第二回收条件的第一类数据块中,选取待释放的各个目标数据块,将各个目标数据块所存储的指定内容写入到指定磁盘中,并对各个目标数据块进行空间释放。
由于满足第二回收条件的第一类数据所存储指定内容表征的最大的提交时间戳,不小于最小活跃读时间戳,也就是,对于满足第二回收条件的第一类数据块而言,所存储的指定内容可能需要应用于数据读取过程中,从而判断出读事务所读取事务ID对应的版本数据是否可见。因此,在从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块后,并不是直接将各个目标数据块进行空间释放,而是先将各个目标数据块所存储的指定内容写入到指定磁盘中,然后再对各个目标数据块进行空间释放。其中,将各个目标数据块所存储的指定内容写入到指定磁盘中,可以使得后续需要读取各个目标数据块中的内存时,可以从指定磁盘中进行读取,从而保证即便各个目标数据块被空间释放,但是各个目标数据块中的指定内容仍然可以被读取到。
其中,将各个目标数据块所存储的指定内容写入到指定磁盘中时,可以以完整数据块的形式写入,具体而言:针对每一目标数据块,在指定磁盘中申请与该目标数据块的大小相匹配的磁盘空间,将该目标数据块所存储的指定内容转存至所申请的磁盘空间中。针对每一目标数据块而言,该目标数据块中所存储的指定内容在磁盘空间中的存储结构,可以与在该目标数据块的存储结构相同,并且,磁盘空间可以通过目标数据块的块号进行标识。可以理解的是,指定磁盘可以是资源服务器中的任一磁盘,当然也可以是与资源服务器相通信的其他设备中的磁盘,这都是合理的。并且,满足第二回收条件的第一类数据块中,可以全部或部分作为待释放的各个目标数据块。
需要说明的是,在数据块被回收后,被回收的数据块的块号是可以延续已经存在的块号进行设置,这样使得,在数据写入过程中和数据读取过程中,在计算出一块号后,可以对应到一数据块。
本发明实施例所提供的存储空间回收方法中,不但考虑满足第一回收条件的第一类数据块进行空间释放,而且,在关于多个第一类数据块的空间占用率大于预定占用率阈值时,对于满足第二回收条件的第一类数据块进行内容转存以及空间释放。可见,本方案不但基于最小活跃读时间戳,来进行数据块的空间回收,而且即便长读事务的存在导致最小活跃读时间戳长期保持不变,也能够基于第二回收条件来使得被全部占用的第一类数据块被回收,达到推进最小活跃读时间戳的效果,因此,通过本方案可以对数据块进行及时回收。
由于从内存中读取效率高于磁盘中的数据读取效率,为了在保证存储空间的及时回收以及数据读取效率,可选地,在本发明的另一实施例中,从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块,可以包括如下步骤A1-A3:
步骤A1,按照预定的数量确定规则,确定待释放的数据块的目标数量;其中,数量确定规则为在数据块空间释放后,关于多个第一类数据块的空间占用率不大于预定占用率阈值的规则;
其中,按照预定的数量确定规则来确定待释放的数据块的目标数量的具体实现方式可以存在多种。示例性的,在一种实现方式中,按照预定占用率阈值和关于多个第一类数据块的总空间大小,确定若空间占用率等于预定占用率阈值时,所需存在的未被占用的第一类数据块的第一数量,以及关于多个第一类数据块的空间占用率大于预定占用率阈值时,未被占用的第一类数据块的第二数量,将第一数量和第二数量进行作差,得到目标数量。示例性的,在另一种实现方式中,按照预定占用率阈值和关于多个第一类数据块的总空间大小,确定若空间占用率等于预定占用率阈值时,所需存在的未被占用的第一空间大小,以及关于多个第一类数据块的空间占用率大于预定占用率阈值时,未被占用的第一类数据块的第二空间大小,将第一空间大小和第二空间大小进行作差并除以第一类数据块的空间大小,上取整的值即为目标数量。
步骤A2,若满足第二回收条件的第一类数据块的数量不小于目标数量,从满足第二回收条件的第一类数据块中,确定目标数量个目标数据块;
步骤A3,若满足第二回收条件的第一类数据块 的数量小于目标数量,将满足第二回收条件的第一类数据块确定为各个目标数据块。
在确定出目标数量后,可以依据目标数量与满足第二回收条件的第一类数据块的数量的大小关系,来选取部分或全部数据块以进行空间释放。
并且,示例性的,在一种实现方式中,从满足第二回收条件的第一类数据块中,选取所述目标数量个目标数据块,可以包括:
按照预定的选取规则,从满足第二回收条件的第一类数据块中,选取目标数量个目标数据块,其中,选取规则为所对应事务ID小的数据块相对于所对应事务ID大的数据块优先被选取的规则,任一第一类数据块对应的事务ID包括该第一类数据块所存储指定内容对应的写事务的事务ID。
示例性的,假如存在10个第一类数据块,第1个第一类数据块用于存储事务ID为1-1000个的写事务对应的指定内容,第2个第一类数据块用于存储事务ID为1001-2000个的写事务对应的指定内容,以此类推。若检测到关于所述多个第一类数据块的空间占用率大于预定占用率阈值时,满足第二回收条件的第一类数据块为第1个-第3个,而确定出的目标数量为2,此时,按照预定的选取规则,可以将第1个第一类数据块和第2个第一类数据块均确定为目标数据块。
本实施例所提供的方案中,不但基于最小活跃读时间戳,来进行数据块的空间回收,而且即便长读事务的存在导致最小活跃读时间戳长期保持不变,也能够基于第二回收条件来使得被全部占用的第一类数据块被回收,达到推进最小活跃读时间戳的效果,因此,通过本方案可以对数据块进行及时回收。而且,能够兼顾及时回收空间以及数据读取效率。
可选地,在本发明的一实施例中,每一写事务对应的指定内容在该写事务的数据写入过程中进行存储,其中,如图3所示,每一写事务的数据写入过程可以包括步骤S301-步骤S303:
S301,当接收到每一写事务的处理请求时,执行该写事务,并在该写事务的执行过程中,将该写事务的事务ID写入目标版本数据中,目标版本数据是该写事务所针对行记录的新的版本数据;
其中,该目标版本数据是该写事务所针对行记录的新的版本数据,具体而言,该目标版本数据是在执行该写事务时所生成的、该写事务所针对行记录的新的版本数据。
由于事务ID属于事务的身份信息,因此,从事务产生,事务ID便存在;并且,事务ID能够唯一标识事务,即与事务的提交时间戳具有唯一的对应性。那么,在该写事务的执行过程中,可以将该写事务的事务ID写入目标版本数据中,后续在获得提交时间戳后,基于该写事务的事务ID和该写事务的提交时间戳,将该写事务对应的指定内容写入到多个第一类数据块中的一个数据块。这样,通过空间换时间的策略,可以解决IO冗余和锁冗余的问题。
需要说明的是,针对分布式系统中的资源服务器在接收到写事务的处理请求时,执行写事务,即为该写事务所针对的行记录生成新的版本数据,在写事务执行完毕时,进入事务提交阶段;在事务递交阶段中,将写事务的提交时间戳写入所生成的版本数据中,并提交该版本数据的方案而言,写事务执行过程中,由于对行记录的版本数据的变更,因此,会涉及到申请和释放页面锁和行锁。而写事务的提交时间戳只有在事务提交阶段才生成,那么,在将写事务的提交时间戳写入到对应的版本数据时,需要再次涉及到版本数据的变更。可见,相关技术中,在实现外部读一致性时,存在IO开销和锁开销较大的问题。本发明实施例中将该写事务对应的指定内容写入到数据块的方式,可以解决IO冗余和锁冗余的问题。
S302,在该写事务执行完毕时,获取该写事务的提交时间戳;
其中,写事务的提交时间戳为在写事务的提交阶段所生成的时间戳。其中,在该写事务执行完毕时,可以进入写事务的提交阶段,从而事务管理器可以向中心授时节点请求提交时间戳,从而将写事务的提交时间戳发送给该资源服务器中的资源管理器,从而得到该写事务的提交时间戳。
S303,将目标版本数据进行提交处理,并基于该写事务的提交时间戳和该写事务的事务ID,将该写事务对应的指定内容写入到多个第一类数据块中的一个数据块。
由于写事务的提交时间戳和读事务的开启时间戳是保证外部读一致性的关键,因此,在将写事务的事务ID写入到行记录的目标版本数据中后,基于该写事务的提交时间戳和该写事务的事务ID,将该写事务对应的指定内容写入到多个第一类数据块中的一个数据块。这样使得,后续在数据读取时,可以基于版本数据中的记录的事务ID查找到相应的提交时间戳,从而基于写事务的提交时间戳和读事务的开启时间戳的关系,判定出读事务所针对行记录的各版本数据是否对读事务可见,从而保证外部读一致性。可以理解的是,将目标版本数据进行提交处理,即进入写事务的提交阶段。
具体而言,每一第一类数据块包括:所述第三数量个存储区域;其中,所述第三数量不小于所述第一数量;
所述基于该写事务的提交时间戳和该事务的事务ID,将该写事务对应的指定内容写入到多个第一类数据块中的一个数据块,可以包括步骤B1和步骤B2:
步骤B1,基于该写事务的事务ID、第一数量以及关于第一数量与第三数量的差值,计算该写事务对应的指定内容待写入的第一类数据块的第一块号和第一偏移地址;
步骤B2,在具有第一块号的第一类数据块中,第一偏移地址所指示的存储区域内,存储该写事务对应的指定内容。
其中,多个第一类数据块的块号为连续块号,且每一第一类数据块中存储事务ID连续的第一数量个写事务对应的指定内容,因此,在获得任一写事务的事务ID后,可以通过对该写事务的事务ID和第一数量进行数学运算,得到该写事务对应的指定内容待存储至的第一类存储块的第一块号,并且,对该写事务的事务ID、第一数量以及关于第三数量与第一数量的差值进行数学运算,得到该写事务对应的指定内容在第一类数据块中的第一偏移地址。
下面举例步骤B1的具体实现方式可以包括:
通过对该写事务的事务ID和第一数量进行取整运算的方式,得到第一块号;并且,基于对写事务的事务ID和第一数量进行取余运算的运算结果,与关于第二数量与第一数量的差值,得到第一偏移地址;
其中,存储写事务对应的指定内容的第一数量个存储区域是连续的。针对第一类数据块中最后一个存储区域用于记录指定内容的情况,无论第三数量与第一数量的大小关系,基于对写事务的事务ID和第一数量进行取余运算的运算结果,与关于第二数量与第一数量的差值,得到第一偏移地址,可以包括:
将对写事务的事务ID和第一数量进行取余运算的运算结果,与关于第二数量与第一数量的差值进行求和,得到第一偏移地址。
并且,可以理解的是,若第三数量等于第一数量,则可以直接将对写事务的事务ID和第一数量进行取余运算的运算结果,作为第一偏移地址。
针对第三数量与第二数量相等的情况而言,每一写事务对应的指定内容可以包括:关于该写事务的事务ID和提交时间戳的映射关系;或者,该写事务的提交时间戳。
为了方便理解步骤B1的具体实现过程,下面以每一写事务对应的指定内容为该写事务的事务ID和提交时间戳的数据映射关系为例,进行举例说明:
例如:假设多个第一类数据块的块号为从1~3,而事务ID的编号为从1~3072,每个第一类数据块存储1024个写事务对应的KV键值对,其中,该KV键值对为关于事务ID和提交时间戳的数据映射关系;其中,每一第一类数据块中关于KV的存储示意图可以参见如图2(b)的右侧的内容;
基于上述说明,假设一写事务的事务ID为5,那么,该写事务对应的数据映射关系待写入的第一类数据块的第一块号的计算方式为:=1;在写入第一类数据块内时的第一偏移地址的计算方式为:5%1024=5。通过计算可知,该写事务对应的数据映射关系待写入的第一类数据块的第一块号为1,以及在写入第一类数据块内时的第一偏移地址为5。
可以理解的是,如果每个第一类数据块的大小为16KB,可以存储1000个KV,按照每1秒有5万个写事务而言,则在没有回收的情况下,能够允许写事务并行的时间和数据块的数量关系如下:
1s时长内的写事务并行,需要50个第一类数据块,即800KB的内存空间;
10s时长内的写事务并行,需要500个第一类数据块,即8M的内存空间;
60s时长内的写事务并行,需要3000个第一类数据块,即50MB的内存空间;
600s时长内的写事务并行,需要30000个第一类数据块,即500MB的内存空间。
也就是说,通过本发明实施例所提供的存储方式,在没有回收的情况下,500MB的内存空间能够容纳600s的写事务并行处理。
为了方便理解步骤B1的具体实现过程,下面以每一写事务对应的指定内容为该写事务的提交时间戳为例,再次进行举例说明:
例如:假设多个第一类数据块的块号为从1~3,而事务ID的编号为从1~2048*3,每个第一类数据块存储2048个写事务的提交时间戳;
基于上述说明,假设一写事务的事务ID为5,那么,该写事务的提交时间戳待写入的第一类数据块的第一块号的计算方式为:=1;在写入第一类数据块内时的第一偏移地址的计算方式为:5%2048=5。通过计算可知,该写事务对应的数据映射关系待写入的第一类数据块的第一块号为1,以及在写入第一类数据块内时的第一偏移地址为5。
可以理解的是,如果每个第一类数据块的大小为16KB,可以存储2000个指定内容,按照每1秒有5万个写事务而言,则在没有回收的情况下,能够允许写事务并行的时间和数据块的数量关系如下:
1s时长内的写事务并行,需要25个第一类数据块,即400KB的内存空间;
10s时长内的写事务并行,需要250个第一类数据块,即4M的内存空间;
60s时长内的写事务并行,需要1500个第一类数据块,即25MB的内存空间;
600s时长内的写事务并行,需要15000个第一类数据块,即250MB的内存空间。
也就是说,通过本发明实施例所提供的存储方式,在没有回收的情况下,250MB的内存空间能够容纳600s的写事务并行处理。相对于存储KV的方式,该存储方式可以大大减小所需的存储空间。
需要说明的是,针对第三数量大于第二数量的情况而言,每一写事务对应的指定内容可以包括:该写事务的提交时间戳;并且,为了方便在数据读取时,验证所读取的提交时间戳是否为某一事务ID对应的写事务的提交时间戳,第一类数据块中的指定存储区域中,可以记录有该数据块用于存储指定内容所对应写事务的最小的写事务ID。示例性的,第三数量可以为第一数量与1的和值。
为了方便理解步骤B1的具体实现过程,下面进行举例说明:
例如:假设多个第一类数据块的块号为从1~3,而事务ID的编号为从1~2047*3,每个第一类数据块存储2047个写事务对应的指定内容,即提交时间戳;其中,每一第一类数据块中关于提交时间戳和指定存储区域所记录的最小的事务ID的存储示意图可以参见如图2(c)的右侧的内容,该图2(c)中右侧内容所记录的header即为指定存储区域内所记录的最小的事务ID,而cts1、cts2……cts2047即为第一类数据块中所记录的第1个的写事务的提交时间戳、第2个写的提交时间戳……第2047个写事务的提交时间戳;
基于上述说明,假设一写事务的事务ID为5,那么,该写事务对应的指定内容待写入的第一类数据块的第一块号的计算方式为:=1;在写入第一类数据块内时的第一偏移地址的计算方式为:5%2047+1=6。通过计算可知,该写事务对应的指定内容待写入的第一类数据块的第一块号为1,以及在写入第一类数据块内时的第一偏移地址为6。
通过该实现方式而言,相对于存储KV的方式,该存储方式可以大大减小所需的存储空间。
另外,为了方便识别每个第一类数据块中已占用存储的指定内容的数量以及最大的提交时间戳,针对每一第一类数据块,可以记录该第一类数据块中的最大提交时间戳和已存储的提交时间戳的数量。假设每个第一类数据块中存储有1000个KV,图2(d)示例性地示出了两个第一类数据块的存储内存,第一个第一类数据块的存储有事务ID为1-1000的事务的数据映射关系,该第一个第一类数据下方的内容为存储的内容,除第一行以外的行左侧为事务ID,右侧为提交时间戳,在第一行中,左侧记录有该第一类存储块中的最大的提交时间戳,而右侧记录有已经写入该第一类数据块的数据映射关系的个数。类似的,存储有事务ID为1001-2000的第二个第一类数据块下方的内容与第一个第一类数据块的存储结构类似。
可选地,在本发明的另一实施例中,为了实现对各个第一类数据块的快速访问,内存中包含多个块号连续的第二类数据块,每一第二类数据块用于存储块号连续的第二数量个第一类数据块的内存地址;
在具有所述第一块号的第一类数据块中,所述第一偏移地址所指示的存储区域内,存储该写事务对应的指定内容,可以包括步骤C1-C3:
步骤C1,基于该第一块号和第二数量,计算目标内存地址所位于的第二类数据块的第二块号,以及该目标内存地址在第二类数据块中的第二偏移地址;其中,该目标内存地址为具有该第一块号的第一类数据块的内存地址;
步骤C2,读取具有该第二块号的第二类存储块中、该第二偏移地址处的内存地址,得到目标内存地址;
步骤C3,在该目标内存地址指示的第一类数据块中,第一偏移地址所指示的存储区域内,存储该写事务对应的指定内容。
其中,多个第二类数据块的块号为连续块号,且每一第二类数据块中存储块号连续的第二数量个第一类数据块的内存地址,因此,在获得第一类数据块的第一块号后,可以通过对第一类数据块的第一块号和第二数量进行数学运算,得到该第一类数据块的内存地址所位于的第二类数据块的第二块号,以及在第二类数据块中的第二偏移地址。
示例性的,通过对第一块号和第二数量进行取整运算的方式,得到第二块号;并且,通过第一块号和第二数量进行取余运算的方式,得到第二偏移地址。
为了方便理解步骤C1的具体实现过程,下面进行举例说明:
例如:假设多个第二类数据块的块号为从1~1024,而多个第一类数据块的块号为从1~6000,每个第二类数据块存储2000个第一类数据块的内存地址;
基于上述说明,假设第一类数据块的第一块号为3,那么,该第一类数据块的目标内存地址所位于的第二类数据块的块号为:=1;在内存地址写入第二类数据块内时的第二偏移地址的计算方式为:3%2000=3。通过计算可知,目标内存地址所位于的第二类数据块的第二块号为1,以及该目标内存地址在第二类数据块中的第二偏移地址为5。
可以理解的是,如果每个第一类数据块的内存地址用8字节存储,16KB的内存空间可以存储2000个第一类数据块的内存地址,而如果每1秒有5万个写事务而每个第一类数据块可以存储1000个KV而言,可以满足40s的并行事务。而16MB的内存空间可以满足40000S的并行业务。
图2(b)和图2(c)给出了第一类数据块和第二类数据块的关系,其中,Block_index_block为第二类数据块,各个Block_index_block中用于记录预定热区空间的内存地址,具体而言,每一第二类数据中记录有多个第一类数据块的内存地址Mem-addr,每一内存地址Mem-addr用于对应第一类数据块,每一类数据块中记录有1024个KV,或者,2047个写事务的提交时间戳。并且,图2(b)和图2(c)给出了第三类数据块,即index_block,该第三类数据块中记录有:预定冷区空间中各子空间的内存地址,每一子空间的大小与第一类数据块的大小相同。
可见,通过较小的内存空间便可以满足大量的并行业务,并且可以通过无锁的方式先加锁访问的效果。
可选地,针对上述的所述内存中还包含多个第二类数据块的情况,在本发明的另一实施例中,本发明实施例所提供的存储空间回收方法还可以包括步骤D1-步骤D2:
步骤D1,针对多个指定数据块中的每一数据块,基于该数据块的块号和第二数量,确定该目标数据块的内存地址所位于的第二类数据块的第三块号,以及该目标数据块的内存地址在所位于的第二类数据块中的第三偏移地址;其中,多个指定数据块包括满足第一回收条件的第一类数据块和各个目标数据块;
步骤D2,在具有第三块号的第二类存储块中的所述第三偏移地址处,写入用于表征可回收状态的标识内容。
可以理解的是,在存储指定数据块的内存地址的存储区域中,写入用于表征回收状态的标识内容后,表明该指定数据块为已空间释放的数据块。
通过上述的回收机制,可以解决相关技术中在实现外部读一致性时,IO开销和锁开销较大的问题;同时,保证内存的合理利用,避免空间浪费。
基于上述的数据块回收方法,本发明实施例还提供了一种数据读取方法。下面对本发明实施例所提供的数据读取方法进行介绍。
本发明实施例所提供的数据读取方法应用于资源服务器,具体的,该数据读取方法的执行主体可以为资源服务器中的资源管理器。该资源服务器为数据存储系统中用于资源管理的服务器,并且,该数据存储系统还可以包括:事务管理服务器和中心授时节点,其中,事务管理服务器中设置有事务管理器。
如图4所述,本发明实施例所提供的一种数据读取方法,可以包括如下步骤:
S401,当接收到读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,该目标行记录为所述读事务所针对的行记录;
其中,在接收到读事务的处理请求时,为了判定该读事务对于该目标行记录的哪些版本数据可见,因此,可以获取目标行记录的各版本数据中的目标事务ID。每一版本数据中的目标事务ID为生成该版本数据时所写入的关于写事务的事务ID。
S402,针对每一目标事务ID,若该目标事务ID不大于第一水位线,则确定记录有该目标事务ID的版本数据为待利用的版本数据;
其中,第一水位线为第一指定内容所对应写事务的事务ID中的最大值,该第一指定内容为满足第一回收条件的第一类数据块所存储的指定内容。
由于满足第一回收条件的第一类数据块所涉及到各个事务ID对应的版本数据,对正在执行的或待执行的任一读事务均是可见,那么,针对每一目标事务ID,若该目标事务ID不大于第一水位线可以表明该目标事务ID对应的版本数据对任一正在执行的或待执行的任一读事务均是可见的。基于此,针对每一目标事务ID,若该目标事务ID不大于第一水位线,则可以确定记录有该目标事务ID的版本数据为待利用的版本数据,即该目标事务ID对应的版本数据对于读事务是可见的。
S403,针对每一目标事务ID,若该目标事务ID大于第一水位线,则确定该目标事务ID与第二水位线的大小关系,按照与所述大小关系相匹配的提交时间戳查找方式,查找该目标事务ID对应的提交时间戳,若所查找到的提交时间戳小于所述读事务的开启时间戳,确定记录有该目标事务ID的版本数据为待利用的版本数据;
其中,所述第二水位线为第二指定内容所对应写事务的事务ID中的最大值,所述第二指定内容为各个目标数据块所存储的指定内容。
示例性性的,所述按照与所述大小关系相匹配的提交时间戳查找方式,查找该目标事务ID对应的提交时间戳,可以包括:
若该目标事务ID不大于第二水位线,基于预定查找方式,查找该目标事务ID对应的提交时间戳;其中,预定查找方式为:关于预定冷区空间和指定磁盘相结合且优先查找所述预定冷区空间的查找方式,预定冷区空间为所述内存中除各个第一类数据块以外的空间;
若该目标事务ID大于第二水位线,从各个第一类数据块所存储的指定内容中,查找该目标事务ID对应的提交时间戳。
其中,若该目标事务ID大于第一水位线而不大于第二水位线,则表明该目标事务ID对应的提交时间戳所在的第一类数据块可能已经被回收,即已经进行空间释放,那么,为了获得提交时间戳,可以通过预定查找方式,从预定冷区空间或指定磁盘中,查找该目标事务ID对应的提交时间戳。而若该目标事务ID大于第二水位线,则表明该目标事务ID对应的提交时间戳仍记录在第一类数据块中,即记录在预定热区空间,此时,可以从各个第一类数据块所存储的指定内容中,查找该目标事务ID对应的提交时间戳。需要说明的是,本发明实施例所提供的方案可以达到牺牲长读事务的访问效率,保证普通效率的访问效率的目的。
可以理解的是,预定冷区空间用于存储从指定磁盘中所读取过的写事务对应的指定内容。基于预定查找方式,查找该目标事务ID对应的提交时间戳具体可以为:从预定冷区空间中,查找是否存在该目标事务ID对应的提交时间戳,如果查找到,结束查找,得到该目标事务ID对应的提交时间戳;若未查找到,从指定磁盘中查找该目标事务ID对应的提交时间戳。
另外,若在所述指定磁盘中查找到该目标事务ID对应的提交时间戳,为了方便后续从预定冷区空间中读取该目标事务ID对应的提交时间戳,则可以将该指定磁盘中的目标内容,写入该预定冷区空间,其中,该目标内容为:该目标事务ID对应的提交时间戳所属于的目标数据块中的指定内容。其中,在将目标内容写入预定冷区空间时,可以在预定冷区空间中申请与第一类数据块大小相匹配的子空间,将目标内容转存至所申请的子空间中。该目标内容在预定冷区空间的子空间的存储结构,可以与在目标数据块的存储结构相同,并且,子空间可以通过目标内容所属的目标数据块的块号进行标识,以便对于目标内容的读取。
其中,预定冷区空间的空间大小可以为小于预定热区空间的大小,示例性的,预定热区空间的空间大小可以为预定冷区空间的10倍、20倍等等。这样使得,通过增设空间较小的预定冷区空间,可以使得相对于直接从指定磁盘中读取数据而言,数据读取效率得到提高。另外,预定冷区空间可以定期清空,以保证从指定磁盘中读取到的内容可以顺利转存到预定冷区空间中。
S404,基于所确定的待利用版本数据,确定所述读事务的响应结果。
可以理解的是,待利用版本数据可以存在至少一个。由于读事务通常是读取最新的数据,因此,可以从待利用版本数据中选取最新的版本数据,作为该读事务的响应结果。
本发明实施例所提供的数据读取方法中,当接收到读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;并基于目标事务ID与第一水位线和第二水位线的大小关系,来确定出记录有目标事务ID的版本数据是否为待利用的版本数据,从而基于所确定的待利用版本数据,确定读事务的响应结果。可见,通过本方案可以对行记录的版本数据的有效读取。
可选地,在本发明的另一实施例中,所述基于预定查找方式,查找该目标事务ID对应的提交时间戳之前,还包括:
判断所述读事务是否符合长事务条件;
当判断结果为是时,执行所述基于预定查找方式,查找该目标事务ID对应的提交时间戳的步骤;
当判断结果为否时,确定记录有该目标事务ID的版本数据为待利用的版本数据。
为了进一步提升访问效率,可以判断所述读事务是否符合长事务条件,即判断所述读事务是否为长读事务,进而根据不同的判断结果执行不同的操作。其中,当判断结果为是时,表明所述读事务为长读事务,那么,目标事务ID对应的写事务的提交时间戳有可能大于所述读事务的开启时间戳,因此,执行所述基于预定查找方式,查找该目标事务ID对应的提交时间戳的步骤;当判断结果为否时,表明所述读事务不为长读事务,那么,目标事务ID对应的写事务的提交时间戳理论上小于所述读事务的开启时间戳,因此,可以直接确定记录有该目标事务ID的版本数据为待利用的版本数据。
示例性的,长事务条件可以为:读事务的开启时间戳与参考时间戳的差值大于预定阈值。其中,参考时间戳为中心授时节点当前已分配的最大时间戳,该预定阈值可以根据实际情况设定,在此不做赘述。
本发明实施例所提供的数据读取方法中,当接收到读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;并基于目标事务ID与第一水位线和第二水位线的大小关系,以及读事务是否为长读事务的判断结果,来确定出记录有目标事务ID的版本数据是否为待利用的版本数据,从而基于所确定的待利用版本数据,确定读事务的响应结果。可见,通过本方案可以实现对行记录的版本数据的快速有效读取。
为了方案清楚,下面介绍从各个第一类数据块所存储的指定内容中,查找该目标事务ID对应的提交时间戳的具体实现方式。
基于上述实施例中所述的数据写入过程,从各个第一类数据块所存储的指定内容中,查找该目标事务ID对应的提交时间戳,可以包括:
步骤D1,基于该目标事务ID和第一数量,计算用于保存写事务对应的指定内容的第一类数据块的第四块号,以及写事务对应的指定内容在写入时的第四偏移地址;其中,该目标写事务为具有该目标事务ID的写事务;步骤D2,在具有该第四块号的第一类数据块中,该第四偏移地址所指示的存储区域内,读取该目标写事务对应的指定内容,得到该目标事务ID对应的提交时间戳。
其中,多个第一类数据块的块号为连续块号,且每一第一类数据块中存储事务ID连续的第一数量个写事务对应的指定内容,因此,在获得任一目标事务ID后,可以通过对该目标事务ID和第一数量进行数学运算,用于保存目标写事务对应的指定内容的第一类数据块的第四块号,以及所述目标写事务对应的指定内容在写入时的第四偏移地址。在确定出第四块号和第四偏移地址后,可以在具有第四块号的第一类数据块中,第四偏移地址所指示的存储区域内,读取写事务对应的指定内容。
示例性的,通过对该目标事务ID和第一数量进行取整运算的方式,得到第四块号;并且,通过对目标事务ID和第一数量进行取余运算的方式,得到第四偏移地址。关于通过目标事务ID确定第一类数据块的块号和偏移地址的方式可以参见上述的数据写入方法中的相应确定过程,在此不做赘述。
可以理解的是,为了实现对各个第一类数据块的快速访问,内存中包含多个块号连续的第二类数据块,每一第二类数据块用于存储块号连续的第二数量个第一类数据块的内存地址。在存在第二类数据块的情况下,在具有该第四块号的第一类数据块中,该第四偏移地址所指示的存储区域内,读取该目标写事务对应的指定内容的具体实现方式,类似于上述的数据写入过程,在此不做赘述。并且,可以理解的是,若存储有第四块号的第一类数据块的内存地址的存储区域中记录有用于表征可回收状态的标识内容时,无需读取提交时间戳,直接确定出记录有该目标事务ID的版本数据为待利用的版本数据。
相应于上述的存储空间回收方法,本发明实施例还提供了存储空间回收装置。本发明实施例所提供的存储空间回收装置,应用于资源服务器;所述资源服务器的内存中包含多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的指定内容,每一写事务对应的指定内容能够表征该写事务所具有的提交时间戳;如图5所示,所述装置包括:
第一处理模块510,用于当检测到任一第一类数据块满足第一回收条件时,将满足所述第一回收条件的第一类数据块进行空间释放;其中,所述第一回收条件包括所存储指定内容的数量为所述第一数量,且所存储指定内容表征的最大的提交时间戳小于最小活跃读时间戳;
第二处理模块520,用于当检测到关于所述多个第一类数据块的空间占用率大于预定占用率阈值时,从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块;其中,所述第二回收条件包括所存储指定内容的数量为所述第一数量,且所存储指定内容表征的最大的提交时间戳不小于最小活跃读时间戳;
第三处理模块530,用于将各个目标数据块所存储的指定内容写入到指定磁盘中,并对各个目标数据块进行空间释放。
可选地,第二处理模块520从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块,包括:
按照预定的数量确定规则,确定待释放的数据块的目标数量;其中,所述数量确定规则为在数据块空间释放后,关于所述多个第一类数据块的空间占用率不大于所述预定占用率阈值的规则;
若满足所述第二回收条件的第一类数据块的数量不小于所述目标数量,从满足所述第二回收条件的第一类数据块中,确定所述目标数量个目标数据块;
若满足所述第二回收条件的第一类数据块 的数量小于所述目标数量,将满足所述第二回收条件的第一类数据块确定为各个目标数据块。
可选地,第二处理模块520从满足所述第二回收条件的第一类数据块中,确定所述目标数量个目标数据块,包括:
按照预定的选取规则,从满足所述第二回收条件的第一类数据块中,选取所述目标数量个目标数据块,其中,所述选取规则为所对应事务ID小的数据块相对于所对应事务ID大的数据块优先被选取的规则,任一第一类数据块对应的事务ID包括该第一类数据块所存储指定内容对应的写事务的事务ID。
可选地,每一写事务对应的指定内容在该写事务的数据写入过程中进行存储,其中,每一写事务的数据写入过程包括:
当接收到每一写事务的处理请求时,执行该写事务,并在该写事务的执行过程中,将该写事务的事务ID写入目标版本数据中,目标版本数据是该写事务所针对行记录的新的版本数据;
在该写事务执行完毕时,获取该写事务的提交时间戳;
将所述目标版本数据进行提交处理,并基于该写事务的提交时间戳和该写事务的事务ID,将该写事务对应的指定内容写入到多个第一类数据块中的一个数据块。
可选地,每一第一类数据块包括:所述第三数量个存储区域;其中,所述第三数量不小于所述第一数量;
所述基于该写事务的提交时间戳和该事务的事务ID,将该写事务对应的指定内容写入到多个第一类数据块中的一个数据块,包括:
基于该写事务的事务ID、所述第一数量以及关于所述第一数量与所述第三数量的差值,计算该写事务对应的指定内容待写入的第一类数据块的第一块号和第一偏移地址;
在具有所述第一块号的第一类数据块中,所述第一偏移地址所指示的存储区域内,存储该写事务对应的指定内容。
可选地,每一写事务对应的指定内容包括:
关于该写事务的事务ID和提交时间戳的映射关系;或者,该写事务的提交时间戳。
可选地,所述内存中还包含多个第二类数据块,每一第二类数据块用于第二数量个第一类数据块的内存地址;
所述装置还包括:第四处理模块,用于针对多个指定数据块中的每一数据块,基于该数据块的块号和所述第二数量,确定该数据块的内存地址所位于的第二类数据块的第三块号,以及该数据块的内存地址在所位于的第二类数据块中的第三偏移地址;其中,多个指定数据块包括满足第一回收条件的第一类数据块和各个目标数据块;
在具有所述第三块号的第二类存储块中的所述第三偏移地址处,写入用于表征可回收状态的标识内容。
相应于上述的数据读取方法,本发明实施例还提供了数据读取装置。如图6所示,本发明实施例所提供的数据读取装置,可以包括:
获取模块610,用于当接收到读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,所述目标行记录为所述读事务所针对的行记录;
第五处理模块620,用于针对每一目标事务ID,若该目标事务ID不大于第一水位线,则确定记录有该目标事务ID的版本数据为待利用的版本数据;其中,所述第一水位线为第一指定内容所对应写事务的事务ID中的最大值,所述第一指定内容为满足第一回收条件的第一类数据块所存储的指定内容;
第六处理模块630,用于针对每一目标事务ID,若该目标事务ID大于第一水位线,则确定该目标事务ID与第二水位线的大小关系,按照与所述大小关系相匹配的提交时间戳查找方式,查找该目标事务ID对应的提交时间戳,若所查找到的提交时间戳小于所述读事务的开启时间戳,确定记录有该目标事务ID的版本数据为待利用的版本数据;其中,所述第二水位线为第二指定内容所对应写事务的事务ID中的最大值,所述第二指定内容为各个目标数据块所存储的指定内容;
确定模块640,用于基于所确定的待利用版本数据,确定所述读事务的响应结果。
可选地,第六处理模块630按照与所述大小关系相匹配的提交时间戳查找方式,查找该目标事务ID对应的提交时间戳,包括:
若该目标事务ID不大于第二水位线,基于预定查找方式,查找该目标事务ID对应的提交时间戳;其中,所述预定查找方式为:关于预定冷区空间和指定磁盘相结合且优先查找所述预定冷区空间的查找方式,所述预定冷区空间为所述内存中除所述各个第一类数据块以外的空间;
若该目标事务ID大于所述第二水位线,从各个第一类数据块所存储的指定内容中,查找该目标事务ID对应的提交时间戳。
可选地,所述装置还包括:
转存模块,用于若在所述指定磁盘中查找到该目标事务ID对应的提交时间戳,则将所述指定磁盘中的目标内容,写入所述预定冷区空间,其中,所述目标内容为:该目标事务ID对应的提交时间戳所属于的目标数据块中的指定内容。
可选地,所述第六处理模块630基于预定查找方式,查找该目标事务ID对应的提交时间戳之前,还用于:
判断所述读事务是否符合长事务条件;
当判断结果为是时,执行所述基于预定查找方式,查找该目标事务ID对应的提交时间戳的步骤;
当判断结果为否时,确定记录有该目标事务ID的版本数据为待利用的版本数据。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现本发明实施例所提供的存储空间回收方法的步骤,或,数据读取方法的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例所提供的存储空间回收方法的步骤,或,数据读取方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本发明实施例所提供的存储空间回收方法的步骤,或,数据读取方法的步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (14)
1.一种存储空间回收方法,其特征在于,应用于资源服务器;所述资源服务器的内存中包含多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的指定内容,每一写事务对应的指定内容能够表征该写事务所具有的提交时间戳;所述方法包括:
当检测到任一第一类数据块满足第一回收条件时,将满足所述第一回收条件的第一类数据块进行空间释放;其中,所述第一回收条件包括所存储指定内容的数量为所述第一数量,且所存储指定内容表征的最大的提交时间戳小于最小活跃读时间戳;
当检测到关于所述多个第一类数据块的空间占用率大于预定占用率阈值时,从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块;其中,所述第二回收条件包括所存储指定内容的数量为所述第一数量,且所存储指定内容表征的最大的提交时间戳不小于最小活跃读时间戳;
将各个目标数据块所存储的指定内容写入到指定磁盘中,并对各个目标数据块进行空间释放;其中,针对每一目标数据块,该目标数据块中所存储的指定内容在磁盘空间中的存储结构,与在该目标数据块的存储结构相同,且存储该目标数据块的指定内容的磁盘空间通过该目标数据块的块号进行标识;
其中,所述从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块,包括:
按照预定的数量确定规则,确定待释放的数据块的目标数量;其中,所述数量确定规则为在数据块空间释放后,关于所述多个第一类数据块的空间占用率不大于所述预定占用率阈值的规则;
若满足所述第二回收条件的第一类数据块的数量不小于所述目标数量,从满足所述第二回收条件的第一类数据块中,确定所述目标数量个目标数据块;
若满足所述第二回收条件的第一类数据块的数量小于所述目标数量,将满足所述第二回收条件的第一类数据块确定为各个目标数据块。
2.根据权利要求1所述的方法,其特征在于,所述从满足所述第二回收条件的第一类数据块中,确定所述目标数量个目标数据块,包括:
按照预定的选取规则,从满足所述第二回收条件的第一类数据块中,选取所述目标数量个目标数据块,其中,所述选取规则为所对应事务ID小的数据块相对于所对应事务ID大的数据块优先被选取的规则,任一第一类数据块对应的事务ID包括该第一类数据块所存储指定内容对应的写事务的事务ID。
3.根据权利要求1或2所述的方法,其特征在于,每一写事务对应的指定内容在该写事务的数据写入过程中进行存储,其中,每一写事务的数据写入过程包括:
当接收到每一写事务的处理请求时,执行该写事务,并在该写事务的执行过程中,将该写事务的事务ID写入目标版本数据中,目标版本数据是该写事务所针对行记录的新的版本数据;
在该写事务执行完毕时,获取该写事务的提交时间戳;
将所述目标版本数据进行提交处理,并基于该写事务的提交时间戳和该写事务的事务ID,将该写事务对应的指定内容写入到多个第一类数据块中的一个数据块。
4.根据权利要求3所述的方法,其特征在于,每一第一类数据块包括:第三数量个存储区域;其中,所述第三数量不小于所述第一数量;
所述基于该写事务的提交时间戳和该事务的事务ID,将该写事务对应的指定内容写入到多个第一类数据块中的一个数据块,包括:
基于该写事务的事务ID、所述第一数量以及关于所述第一数量与所述第三数量的差值,计算该写事务对应的指定内容待写入的第一类数据块的第一块号和第一偏移地址;
在具有所述第一块号的第一类数据块中,所述第一偏移地址所指示的存储区域内,存储该写事务对应的指定内容。
5.根据权利要求1或2所述的方法,其特征在于,每一写事务对应的指定内容包括:
关于该写事务的事务ID和提交时间戳的映射关系;或者,该写事务的提交时间戳。
6.根据权利要求1或2所述的方法,其特征在于,所述内存中还包含多个第二类数据块,每一第二类数据块用于第二数量个第一类数据块的内存地址;
所述方法还包括:针对多个指定数据块中的每一数据块,基于该数据块的块号和所述第二数量,确定该数据块的内存地址所位于的第二类数据块的第三块号,以及该数据块的内存地址在所位于的第二类数据块中的第三偏移地址;其中,多个指定数据块包括满足第一回收条件的第一类数据块和各个目标数据块;
在具有所述第三块号的第二类存储块中的所述第三偏移地址处,写入用于表征可回收状态的标识内容。
7.一种基于权利要求1-6任一项所述的存储空间回收方法的数据读取方法,其特征在于,所述方法包括:
当接收到读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,所述目标行记录为所述读事务所针对的行记录;
针对每一目标事务ID,若该目标事务ID不大于第一水位线,则确定记录有该目标事务ID的版本数据为待利用的版本数据;其中,所述第一水位线为第一指定内容所对应写事务的事务ID中的最大值,所述第一指定内容为满足第一回收条件的第一类数据块所存储的指定内容;
针对每一目标事务ID,若该目标事务ID大于第一水位线,则确定该目标事务ID与第二水位线的大小关系,按照与所述大小关系相匹配的提交时间戳查找方式,查找该目标事务ID对应的提交时间戳,若所查找到的提交时间戳小于所述读事务的开启时间戳,确定记录有该目标事务ID的版本数据为待利用的版本数据;其中,所述第二水位线为第二指定内容所对应写事务的事务ID中的最大值,所述第二指定内容为各个目标数据块所存储的指定内容;
基于所确定的待利用版本数据,确定所述读事务的响应结果。
8.根据权利要求7所述的方法,其特征在于,所述按照与所述大小关系相匹配的提交时间戳查找方式,查找该目标事务ID对应的提交时间戳,包括:
若该目标事务ID不大于第二水位线,基于预定查找方式,查找该目标事务ID对应的提交时间戳;其中,所述预定查找方式为:关于预定冷区空间和指定磁盘相结合且优先查找所述预定冷区空间的查找方式,所述预定冷区空间为所述内存中除所述各个第一类数据块以外的空间;
若该目标事务ID大于所述第二水位线,从各个第一类数据块所存储的指定内容中,查找该目标事务ID对应的提交时间戳。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若在所述指定磁盘中查找到该目标事务ID对应的提交时间戳,则将所述指定磁盘中的目标内容,写入所述预定冷区空间,其中,所述目标内容为:该目标事务ID对应的提交时间戳所属于的目标数据块中的指定内容。
10.根据权利要求8-9任一项所述的方法,其特征在于,所述基于预定查找方式,查找该目标事务ID对应的提交时间戳之前,还包括:
判断所述读事务是否符合长事务条件;
当判断结果为是时,执行所述基于预定查找方式,查找该目标事务ID对应的提交时间戳的步骤;
当判断结果为否时,确定记录有该目标事务ID的版本数据为待利用的版本数据。
11.一种存储空间回收装置,其特征在于,应用于资源服务器;所述资源服务器的内存中包含多个第一类数据块,每一第一类数据块用于存储事务ID连续的第一数量个写事务对应的指定内容,每一写事务对应的指定内容能够表征该写事务所具有的提交时间戳;所述装置包括:
第一处理模块,用于当检测到任一第一类数据块满足第一回收条件时,将满足所述第一回收条件的第一类数据块进行空间释放;其中,所述第一回收条件包括所存储指定内容的数量为所述第一数量,且所存储指定内容表征的最大的提交时间戳小于最小活跃读时间戳;
第二处理模块,用于当检测到关于所述多个第一类数据块的空间占用率大于预定占用率阈值时,从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块;其中,所述第二回收条件包括所存储指定内容的数量为所述第一数量,且所存储指定内容表征的最大的提交时间戳不小于最小活跃读时间戳;
第三处理模块,用于将各个目标数据块所存储的指定内容写入到指定磁盘中,并对各个目标数据块进行空间释放;其中,针对每一目标数据块,该目标数据块中所存储的指定内容在磁盘空间中的存储结构,与在该目标数据块的存储结构相同,且存储该目标数据块的指定内容的磁盘空间通过该目标数据块的块号进行标识;
其中,所述第二处理模块从满足第二回收条件的第一类数据块中,确定待释放的各个目标数据块,包括:
按照预定的数量确定规则,确定待释放的数据块的目标数量;其中,所述数量确定规则为在数据块空间释放后,关于所述多个第一类数据块的空间占用率不大于所述预定占用率阈值的规则;
若满足所述第二回收条件的第一类数据块的数量不小于所述目标数量,从满足所述第二回收条件的第一类数据块中,确定所述目标数量个目标数据块;
若满足所述第二回收条件的第一类数据库的数量小于所述目标数量,将满足所述第二回收条件的第一类数据块确定为各个目标数据块。
12.一种基于权利要求1-6任一项所述的存储空间回收方法的数据读取装置,其特征在于,所述装置包括:
获取模块,用于当接收到读事务的处理请求时,获取目标行记录的各版本数据中的目标事务ID;其中,所述目标行记录为所述读事务所针对的行记录;
第五处理模块,用于针对每一目标事务ID,若该目标事务ID不大于第一水位线,则确定记录有该目标事务ID的版本数据为待利用的版本数据;其中,所述第一水位线为第一指定内容所对应写事务的事务ID中的最大值,所述第一指定内容为满足第一回收条件的第一类数据块所存储的指定内容;
第六处理模块,用于针对每一目标事务ID,若该目标事务ID大于第一水位线,则确定该目标事务ID与第二水位线的大小关系,按照与所述大小关系相匹配的提交时间戳查找方式,查找该目标事务ID对应的提交时间戳,若所查找到的提交时间戳小于所述读事务的开启时间戳,确定记录有该目标事务ID的版本数据为待利用的版本数据;其中,所述第二水位线为第二指定内容所对应写事务的事务ID中的最大值,所述第二指定内容为各个目标数据块所存储的指定内容;
确定模块,用于基于所确定的待利用版本数据,确定所述读事务的响应结果。
13.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法步骤,或者,权利要求7-10任一项所述的方法步骤。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一所述的方法步骤,或者,权利要求7-10任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110543878.XA CN113032292B (zh) | 2021-05-19 | 2021-05-19 | 存储空间回收方法、数据读取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110543878.XA CN113032292B (zh) | 2021-05-19 | 2021-05-19 | 存储空间回收方法、数据读取方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113032292A CN113032292A (zh) | 2021-06-25 |
CN113032292B true CN113032292B (zh) | 2021-09-03 |
Family
ID=76455380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110543878.XA Active CN113032292B (zh) | 2021-05-19 | 2021-05-19 | 存储空间回收方法、数据读取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113032292B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312370B (zh) * | 2021-07-30 | 2021-10-29 | 北京金山云网络技术有限公司 | 信息获取方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109344090A (zh) * | 2018-10-30 | 2019-02-15 | 深圳润迅数据通信有限公司 | 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心 |
CN109690485A (zh) * | 2018-08-24 | 2019-04-26 | 袁振南 | 基于数据结构的垃圾回收方法、计算机及存储介质 |
CN111475585A (zh) * | 2020-06-22 | 2020-07-31 | 阿里云计算有限公司 | 数据处理方法、装置和系统 |
CN112231070A (zh) * | 2020-10-15 | 2021-01-15 | 北京金山云网络技术有限公司 | 数据写入、读取方法、装置及服务器 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644238B2 (en) * | 2007-06-01 | 2010-01-05 | Microsoft Corporation | Timestamp based transactional memory |
US8442962B2 (en) * | 2010-12-28 | 2013-05-14 | Sap Ag | Distributed transaction management using two-phase commit optimization |
US10664462B2 (en) * | 2017-03-01 | 2020-05-26 | Sap Se | In-memory row storage architecture |
CN112597254B (zh) * | 2020-12-07 | 2023-02-03 | 中国科学院计算技术研究所 | 面向混合dram-nvm主存的联机事务型数据库系统 |
-
2021
- 2021-05-19 CN CN202110543878.XA patent/CN113032292B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109690485A (zh) * | 2018-08-24 | 2019-04-26 | 袁振南 | 基于数据结构的垃圾回收方法、计算机及存储介质 |
CN109344090A (zh) * | 2018-10-30 | 2019-02-15 | 深圳润迅数据通信有限公司 | 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心 |
CN111475585A (zh) * | 2020-06-22 | 2020-07-31 | 阿里云计算有限公司 | 数据处理方法、装置和系统 |
CN112231070A (zh) * | 2020-10-15 | 2021-01-15 | 北京金山云网络技术有限公司 | 数据写入、读取方法、装置及服务器 |
Non-Patent Citations (2)
Title |
---|
Using timestamping to optimize two phase commit;D. Lomet 等;《[1993] Proceedings of the Second International Conference on Parallel and Distributed Information Systems》;IEEE;20020806;第48-55页 * |
事务内存的并行优化研究;晏志超;《中国博士学位论文全文数据库(信息科技辑)》;20130715(第7期);第I138-10页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113032292A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108363806B (zh) | 数据库的多版本并发控制方法、装置、服务器及存储介质 | |
US11386065B2 (en) | Database concurrency control through hash-bucket latching | |
Levandoski et al. | LLAMA: A cache/storage subsystem for modern hardware | |
US7664799B2 (en) | In-memory space management for database systems | |
Yu et al. | Sundial: Harmonizing concurrency control and caching in a distributed OLTP database management system | |
CN112231070A (zh) | 数据写入、读取方法、装置及服务器 | |
Wu et al. | Transaction healing: Scaling optimistic concurrency control on multicores | |
US10769128B2 (en) | Delegated key-level locking for a transactional multi-version key-value store | |
CN110473100B (zh) | 一种基于区块链系统的交易处理方法及装置 | |
US10795877B2 (en) | Multi-version concurrency control (MVCC) in non-volatile memory | |
CN113515501B (zh) | 非易失性内存数据库管理系统恢复方法、装置和电子设备 | |
CN113032292B (zh) | 存储空间回收方法、数据读取方法及装置 | |
CN115145697A (zh) | 数据库事务的处理方法、装置及电子设备 | |
CN115408411A (zh) | 数据写入方法、装置、电子设备及存储介质 | |
US20060277221A1 (en) | Transactional file system with client partitioning | |
CN110546609B (zh) | 硬件事务内存(htm)辅助数据库事务的方法及系统 | |
CN113220490A (zh) | 异步写回持久化内存的事务持久化方法及系统 | |
CN115629822B (zh) | 一种基于多核处理器的并发事务处理方法及其系统 | |
US20230090835A1 (en) | Reducing requests using probabilistic data structures | |
CN116225627A (zh) | 事务记录方法和系统 | |
JP3107094B2 (ja) | 共用バッファのロック期間短縮処理方法及び装置 | |
CN110096389A (zh) | 一种数据库的启动方法、装置、设备和存储介质 | |
CN117056363B (zh) | 数据缓存方法、系统、设备以及存储介质 | |
CN117931066A (zh) | 一种磁盘空间的分配方法、装置、电子设备及存储介质 | |
CN117687807A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |