CN105630695B - 一种事务提交的方法和装置 - Google Patents

一种事务提交的方法和装置 Download PDF

Info

Publication number
CN105630695B
CN105630695B CN201410579796.0A CN201410579796A CN105630695B CN 105630695 B CN105630695 B CN 105630695B CN 201410579796 A CN201410579796 A CN 201410579796A CN 105630695 B CN105630695 B CN 105630695B
Authority
CN
China
Prior art keywords
group
data block
external memory
affairs
written
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
CN201410579796.0A
Other languages
English (en)
Other versions
CN105630695A (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.)
Tsinghua University
Huawei Technologies Co Ltd
Original Assignee
Tsinghua University
Huawei Technologies Co Ltd
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 Tsinghua University, Huawei Technologies Co Ltd filed Critical Tsinghua University
Priority to CN201410579796.0A priority Critical patent/CN105630695B/zh
Publication of CN105630695A publication Critical patent/CN105630695A/zh
Application granted granted Critical
Publication of CN105630695B publication Critical patent/CN105630695B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明实施例公开了一种事务提交的方法,包括:接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括1个空闲的存储单元,M和N为整数,0<M≤N;若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据;确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。本发明实施例还公开了一种事务提交的装置。采用本发明,能较少数据刷写的次数,提供事务提交的吞吐量。

Description

一种事务提交的方法和装置
技术领域
本发明涉及计算机领域,尤其涉及一种事务提交的方法和装置。
背景技术
传统的基于DRAM(Dynamic Random Access Memory,动态随机存取存储器,简称DRAM)的内存由于其在扩容能力上的限制,使其越来越成为制约系统计算性能提高的一个重要障碍。一种阻抗性存储设备(Resistive Memory)逐步呈现出取代现有内存的趋势。阻抗性存储设备通过介质不同的阻抗状态来存储分别存储“0”和“1”的信息。比较有代表性的阻抗性存储设备包括——相变存储器(PCM,Phase Change Memory)、磁性随机存储器(MRAM,Magnetic Random Access Memory)、自旋转移力矩随机存取存储器(STT-RAM,SpinTorque Transfer Random Access Memory)等。然而,绝大多数的阻抗性存储设备的写性能与DRAM有较大差距和寿命也不能达到对Memory所要求的10^15的要求。另外,为了充分发挥SCM的性能特点,对SCM(Storage Class Memory,存储级内存,简称SCM)中数据访问方式与传统的磁盘以及SSD不同,应尽量避免OS(Operation System,操作系统,简称OS)参与,而由应用程序自己控制和维护。
应用程序对数据的维护需要Transaction来保证其数据的一致性,在SCM上做事务Transaction对系统性能和SCM的寿命会产生较大影响。其影响主要表现在三个方面:1、维护原子性会产生的冗余写,这些冗余写既降低SCM寿命也影响性能。2、高并发的Transaction会导致碰撞,取消的Transaction中已经写入SCM的数据也将作废,对SCM的寿命也会产生影响。3、保证数据的持久性,需要穿过Cache,使用mfence指令和clflush指令分多次将数据写入SCM中,频繁的刷写严重降低了SCM性能。
发明内容
本发明实施例所要解决的技术问题在于,提供一种事务提交的方法。可解决现有技术中提交事务时数据刷写次数过多的问题。
为了解决上述技术问题,本发明实施例提供了一种事务提交的方法,包括:
接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括1个空闲的存储单元,M和N为整数,0<M≤N;
若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据;
确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
结合第一方面,在第一种可能的实现方式中,所述若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据,还包括:
获取版本号计数器的当前计数值;
将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计时器的当前计数值加1。
结合第一方面或第一种可能的实现方式,在第二种可能的实现方式中,所述若所述外部存储器的每个组上待写入的数据块的数量均满足小于2包括:
获取写入所述外部存储器的写操作地址;
计算每个写操作地址所属的组的组号,若计算得到的组号不重复,则确定每个组上待写入的数据块的数量满足小于2。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中还包括:
将第X个数据块的指针指向第X+1个数据块所在的组的组物理地址,其中,第M个数据块的指针指向第1个数据块所在的组的组物理地址,M为整数,0<X≤M-1。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中之后,还包括:
接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;
根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRAM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;
根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
结合第一方面至第五种可能的实现方式中的任意一种,在第六种可能的实现方式中,所述事务关联的M个数据块在向所述外部存储器提交之前存储在DRAM中。
相应地,本发明实施例第二方面还提供了一种事务提交的装置,包括:
接收模块,用于接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括1个空闲的存储单元,M和N为整数,0<M≤N;
获取模块,用于若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据;
写入模块,用于确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
结合第二方面,在第一种可能的实现方式中,所述获取模块还用于获取版本号计数器的当前计数值;将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计时器的当前计数值加1。
结合第二方面或第一种可能的实现方式,在第二种可能的实现方式中,所述获取模块包括:
获取单元,用于获取写入所述外部存储器的写操作地址;
确定单元,用于计算每个写操作地址所属的组的组号,若计算得到的组号不重复,则确定每个组上待写入的数据块的数量满足小于2。
结合第二种可能的实现方式,在第三种可能的实现方式中,所述写入模块还用于将第X个数据块的指针指向第X+1个数据块所在的组的物理地址,其中,第M个数据块的指针指向第1个数据块所在的组的物理地址,M为整数,0<X≤M-1。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
映射模块,用于获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
定位模块,用于接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRRM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
结合第二方面至第五种可能的实现方式中的任意一种,在第六种可能的实现方式中,所述事务关联的M个数据块在向所述外部存储器提交之前存储在DRAM中。
实施本发明实施例,具有如下有益效果:
外部存储器划分为多个组,每个组包括1个空闲的存储单元,当需要提交事务时,判断外部存储器的每个组上待写入的数据块的数据是否满足小于2,若为是,将事务关联的多个数据块一次性写入各自对应的组的空闲的存储单元中,这样有效的减少事务提交过程中对外部存储器的刷写次数,提高了事务提交的吞吐量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是为本发明第一实施例提供的一种事务提交的方法的流程示意图;
图2是本发明第二实施例提供的一种事务提交的方法的流程示意图;
图3是本发明实施例提供的一种建立映射关联的示意图;
图4是本发明实施例提供的一种定位数据块的原理示意图;
图5是本发明第一实施例提供的一种事务提交的装置的结构示意图;
图6是本发明第二实施例提供的一种事务提交的装置的结构示意图;
图7是图6中获取模块的结构示意图;
图8是本发明第三实施例提供的一种事务提交的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,为本发明第一实施例提供的一种事务提交的方法的流程示意图,在本发明实施例中,所述方法包括:
S101、接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括1个空闲的存储单元,M和N为整数,0<M≤N。
具体的,需要提交事务时,事务向处理事务提交的装置(以下简称装置)发送提交请求,所述提交请求用于向外部存储器提交事务关联的M个数据块,提交请求中携带每个数据块的写操作地址,写操作地址对应外部存储器中的物理地址。M个数据块提交到外部存储器之前可以存储在CPU的内部存储器中,例如CPU的DRAM中。外部存储器划分为N行P列的存储单元矩阵,其中存储单元矩阵的每一行为1个组,外部存储器共划分为N个组,每个组包括1个空闲的存储单元和至少一个占用的存储单元,存储单元用于存储事务关联的数据块,每个数据块占用一个存储单元,M和N为整数,0<M≤N。
S102、若所述外部存储器的每个组上待写入的数据块的数控均满足小于2,获取所述M个数据块中每个数据块的元数据。
具体的,外部存储器的每个组只包括一个空闲的存储单元,因此每个组只能写入一个数据块,如果某个组上待写入的数据块的数量大于1,则这个组会发生溢出,由于事务存在原子性的特性,事务将无法被正确提交。装置可根据每个数据块的写操作地址判断是否发生外部存储器的组是否发生溢出,向外部存储器写入M个数据块,每个数据块会分配一个写操作地址,根据M个写操作地址所属的组,M个写操作地址所属的组不相互重复,则表明M个数据块写入的组不相同,不会发生溢出。如果M个写操作地址所属的组存在至少两个相同的组,则表明某个组中待写入的数据块的数据块的数量会超过1个。
如果N个组中每个组上待写入的数据块的数据均满足小于2,获取M个数据块中每个数据块的元数据,元数据表示数据块的属性信息,例如,属性信息包括:数据块的大小、数据块的物理地址、数据块的逻辑地址和数据块的有效期。
S103、确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
具体的,装置确定M个数据块写入的组,由于外部存储器中的组没有发生溢出,M个数据块的写操作地址落入外部存储器中M个不同的组内,M个数据块的将每个数据块和该数据块关联的元数据写入各自对应的组的空闲的存储单元中。如果事务关联的M个数据块都正确写入各组对应的组的空闲的存储单元中,则事务提交成功;如果事务关联的M个数据块至少一个数据块未正确写入各自对应的组的空闲的存储单元中,执行事务回滚。
需要说明的是,本发明实施例中的外部存储器可以使PCM、MARM或STT-RAM,也可以使其他类型的存储器,本发明不作限制。
实施本发明的实施例,外部存储器划分为多个组,每个组包括1个空闲的存储单元,当需要提交事务时,判断外部存储器的每个组上待写入的数据块的数据是否满足小于2,若为是,将事务关联的多个数据块一次性写入各自对应的组的空闲的存储单元中,这样有效的减少事务提交过程中对外部存储器的刷写次数,提高了事务提交的吞吐量。
参见图2,为本发明第二实施例提供的一种事务提交的方法的流程示意图,在本发明实施例中,所述方法包括:
S201、接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括1个空闲的存储单元,M和N为整数,0<M≤N。
具体的,需要提交事务时,事务向处理事务提交的装置(以下简称装置)发送提交请求,所述提交请求用于向外部存储器提交事务关联的M个数据块,提交请求中携带每个数据块的写操作地址,写操作地址对应外部存储器中的物理地址。M个数据块提交到外部存储器之前可以存储在CPU的内部存储器中,例如CPU的DRAM中。外部存储器划分为N行P列的存储单元矩阵,其中存储单元矩阵的每一行为1个组,外部存储器共划分为N个组,每个组包括1个空闲的存储单元和至少一个占用的存储单元,存储单元用于存储事务关联的数据块,每个数据块占用一个存储单元,M和N为整数,0<M≤N。
示例性的,M=6,需要提交的事务关联有6个数据块,事务向处理事务提交的装置发送提交请求,提交请求用于向外部存储器提交事务关联的6个数据块,6个数据块分别为数据块1、数据块2、数据块3、数据块4、数据块5和数据块6,6个数据块的写操作地址分别为0x5200、0x3F21、0x6351、0x6525、0x5148和0x5621,写操作地址对应外部存储器中存储单元的地址。外部存储器划分为8行7列的存储单元矩阵,存储单元矩阵每一行为1个组,每个组内包含1个空闲的存储单元和6个占用的存储单元,空闲的存储单元可以用来存储事务关联的数据块,占用的存储单元已存储有其他数据,不能再用来存储事务的数据块。
S202、获取写入所述外部存储器的写操作地址。
具体的,装置获取待写入外部存储器的数据块的写操作地址,每个写操作地址对应外部存储器中的一个存储单元的地址,写入外部存储器的数据块可能属于同一事务,也可能属于不同的事务。例如,装置检测到待写入外部存储器的数据块为6个,分别获取6个待写入数据块的写操作地址为0x5200、0x3F21、0x6351、0x6525、0x5148和0x5621,写操作地址对应外部存储器中存储单元的地址。
S203、计算每个写操作地址所属的组的组号。
具体的,预设设置有外部存储器的组号和地址的映射关系,根据预设的映射关系可以查询地址所属的组的组号。
示例性的,假设数据块1的写操作地址所属的组的组号为1,数据块2的写操作地址所属的组的组号为2,数据块2的写操作地址所属的组的组号为3、数据库4的写操作地址所属的组的组号为4,数据块5所属的组的组号为5,数据块6所属的组的组号为6。
S204、判断计算得到的组号是否重复。
具体的,外部存储器的每个组只包括一个空闲的存储单元,因此每个组只能写入一个数据块,如果某个组上待写入的数据块的数量大于1,则这个组会发生溢出,由于事务存在原子性的特性,事务将无法被正确提交。装置判断计算得到的组号是否重复,若为否,M个数据块将写入M个不同的组内,组内待写入的数据块的数据不会大于2,外部存储器的每个组都不会发生溢出,执行S205。如果M个写操作地址所属的组的组号存在至少两个相同,则表明某个组中待写入的数据块的数据块的数量至少为2个,该组发生溢出,执行S206。
示例性的,以S203计算得到的组号为例,6个数据块将分布写入6个不同的组,数据块1写入组1,数据块2写入组2,数据块3写入组3,数据块4写入组4,数据块5写入组5,数据块6写入组6,外部存储器的组7和组8则没有数据块写入,外部存储器中每个组上待写入的数据块的数量均小于1,没有发生溢出。
假设根据S203计算得到数据块1写入组1,数据块2写入组1,数据块3写入组2,数据块4写入组2,数据块5写入组3,数据块4写入组3,则组1上待写入的数据块为2个,组2上待写入的数据块的数量为2个,组3上待写入的数据块的数量为2个,组1、组2和组3发生溢出。
S205、获取所述M个数据块中每个数据块的元数据。
其中,元数据表示数据块的属性信息,例如,属性信息包括:数据块的大小、数据块的物理地址、数据块的逻辑地址和数据块的有效期。
可选的,在本发明的一些实施例中,当装置判处外部存储器的每个组均没有溢出后,获取版本号计数器的当前计数值;将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计时器的当前计数值加1。版本号计数器用于记录事务的版本号。
S206、采用日志方式提交所述事务关联的M个数据块。
其中,装置可采用WAL方式提交事务关联的M个数据块,或者采用现有技术中其他类型的日志方式提交事务关联的M个数据块,本发明不作限制。
S207、确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
具体的,装置确定M个数据块写入的组,由于外部存储器中的组没有发生溢出,M个数据块的写操作地址落入外部存储器中M个不同的组内,M个数据块的将每个数据块和该数据块关联的元数据写入各自对应的组的空闲的存储单元中。如果事务关联的M个数据块都正确写入各组对应的组的空闲的存储单元中,则事务提交成功;如果事务关联的M个数据块至少一个数据块未正确写入各自对应的组的空闲的存储单元中,执行事务回滚。
可选的,在本发明的一些实施例中,M个数据块成功写入外部存储器中后,装置将第X个数据块的指针指向第X+1个数据块所在的组的物理地址,其中,第M个数据块的指针指向第1个数据块所在的组的物理地址,M为整数,0<X≤M-1。
这样,当系统崩溃,需要重构数据时,每一个组内仅有最大的版本号的数据块可能是提交未完成的数据块,装置需要进一步检查这个数据块是否已经提交,如果通过追踪这个数据块的元数据能形成一个环,或者追踪到一个组,其版本号不是最大的,那么这个数据块就提交成功,否则,这个数据块提交失败,是一个无效的数据块。
S208、获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
具体的,组中占用的存储单元指存储有数据块的存储单元,装置获取存储有数据块的存储单元的组物理地址和组逻辑地址,组物理地址指存储单元位于组中的物理地址,组逻辑地址指存储单元位于组中的逻辑地址,建立组中的至少一个存储单元的组逻辑地址和组物理地址的映射关系,将映射关系存储至DRAM的映射表中。
示例性的,参见图3,DRAM存储有事务关联的M个数据块,M个数据块写入SCM的N个组中,SCM的每个组包含1个空闲的存储单元和6个占用的存储单元,假设SCM的N个组中每个组上待写入的数据块的数量不超过1,即每个组没有发生溢出,M个数据块成功写入SCM中不用的组的空闲的存储单元中。装置获取组i中的占用的存储单元为第1至第4个存储单元、第5个和第6个存储单元,上述6个存储单元的组逻辑地址分别为A、B、C、D、E和F,组逻辑地址分别为000、010、100、011、110和101,建立组i内的存储单元的组逻辑地址和组物理地址的映射关系,并将映射关系存储至DRAM的映射表中。
需要说明的是,S208执行的顺序在本发明实施例中不作限制,可以在事务提交完成后执行,也可以是接收到触发指令后再执行。
S209、接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRAM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
具体的,参加图4为查询外部存储器中目标数据块的过程,其中,AMF(AlgebraicMapping Function)指的是代数映射函数,GMT(Group based Mapping Table)指基于分组的映射表。S1:对于一个给定的目标数据块,使用它的逻辑地址(LA,Logical Address)经过一个AMF代数映射函数去计算得到出它的组号(Group ID)和组逻辑地址(GLA,Group basedLogical Address),通过查询在DRAM中的映射表将GLA转换成基于组的物理地址(GPA,Group based Physical Address)。GPA和Group ID组合起来就是目标数据块的实际存放地址。
实施本发明的实施例,外部存储器划分为多个组,每个组包括1个空闲的存储单元,当需要提交事务时,判断外部存储器的每个组上待写入的数据块的数据是否满足小于2,若为是,将事务关联的多个数据块写入各自对应的组的空闲的存储单元中,这样有效的减少事务提交过程中对外部存储器的刷写次数,提高了事务提交的吞吐量。
参加图5,为本发明第一实施例提供的一种事务提交的装置的结构示意图,在本发明实施例中,所述装置包括接收模块10、获取模块11和写入模块12。
接收模块,用于接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括1个空闲的存储单元,M和N为整数,0<M≤N。
获取模块,用于若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据。
写入模块,用于确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
本发明实施例和方法实施例一基于同一构思,其带来的技术效果也相同,具体请参照过程实施例一的描述,此处不再赘述。
参加图6和图7,为本发明第二实施例提供的一种事务提交的装置的结构示意图,在本发明实施例中,所述装置除包括接收模块10、获取模块11和写入模块12之外,还包括:映射模块13和定位模块14。
映射模块13,用于获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
定位模块14,用于接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRRM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
可选的,获取模块11还用于获取版本号计数器的当前计数值;将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计时器的当前计数值加1。
可选的,获取模块11包括:获取单元111和确定单元112。
获取单元111,用于获取写入所述外部存储器的写操作地址;
确定单元112,用于计算每个写操作地址所属的组的组号,若计算得到的组号不重复,则确定每个组上待写入的数据块的数量满足小于2。
可选的,写入模块12还用于将第X个数据块的指针指向第X+1个数据块所在的组的物理地址,其中,第M个数据块的指针指向第1个数据块所在的组的物理地址,M为整数,0<X≤M-1。
可选的,所述事务关联的M个数据块在向所述外部存储器提交之前存储在DRAM中。
本发明实施例和方法实施例二基于同一构思,其带来的技术效果也相同,具体过程请参照方法实施例二的描述,此处不再赘述。
参加图8,为本发明第三实施例提供的一种事务提交的装置的结构示意图,在本发明实施例中,装置1包括处理器61、存储器62和通信接口63,通信接口61链接外部存储器,装置1中的处理器61的数量可以是一个或多个,图8以一个处理器为例。本发明的一些实施例中,处理器61、存储器62和通信接口63可通过总线或其他方式连接,图8中以总线连接为例。
其中,存储器62中存储一组程序代码,且处理器61用于调用存储器62中存储的程序代码,用于执行以下操作:
接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括1个空闲的存储单元,M和N为整数,0<M≤N;
若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据;
确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
在本发明的一些实施例中,处理器61执行所述若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据,还包括:
获取版本号计数器的当前计数值;
将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计时器的当前计数值加1。
在本发明的一些实施例中,处理器61执行所述若所述外部存储器的每个组上待写入的数据块的数量均满足小于2包括:
获取写入所述外部存储器的写操作地址;
计算每个写操作地址所属的组的组号,若计算得到的组号不重复,则确定每个组上待写入的数据块的数量满足小于2。
在本发明的一些实施例中,处理器执行所述确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中还包括:
将第X个数据块的指针指向第X+1个数据块所在的组的组物理地址,其中,第M个数据块的指针指向第1个数据块所在的组的组物理地址,M为整数,0<X≤M-1。
在本发明的一些实施例中,处理器61还用执行:
获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
在本发明的一些实施例中,处理器61还用于执行:
接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;
根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRAM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;
根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
在本发明的一些实施例中,其特征在于,所述事务关联的M个数据块在向所述外部存储器提交之前存储在DRAM中。
实施本发明的实施例,外部存储器划分为多个组,每个组包括1个空闲的存储单元,当需要提交事务时,判断外部存储器的每个组上待写入的数据块的数据是否满足小于2,若为是,将事务关联的多个数据块一次性写入各自对应的组的空闲的存储单元中,这样有效的减少事务提交过程中对外部存储器的刷写次数,提高了事务提交的吞吐量。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

Claims (14)

1.一种事务提交的方法,其特征在于,包括:
接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括1个空闲的存储单元,M和N为整数,0<M≤N;
若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据;
确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
2.如权利要求1所述的方法,其特征在于,所述若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据,还包括:
获取版本号计数器的当前计数值;
将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计数器的当前计数值加1。
3.如权利要求1或2所述的方法,其特征在于,所述若所述外部存储器的每个组上待写入的数据块的数量均满足小于2包括:
获取写入所述外部存储器的写操作地址;
计算每个写操作地址所属的组的组号,若计算得到的组号不重复,则确定每个组上待写入的数据块的数量满足小于2。
4.如权利要求3所述的方法,其特征在于,所述确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中还包括:
将第X个数据块的指针指向第X+1个数据块所在的组的组物理地址,其中,第M个数据块的指针指向第1个数据块所在的组的组物理地址,M为整数,0<X≤M-1。
5.如权利要求4所述的方法,其特征在于,还包括:
获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
6.如权利要求5所述的方法,其特征在于,所述确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中之后,还包括:
接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;
根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRAM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;
根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
7.如权利要求1所述的方法,其特征在于,所述事务关联的M个数据块在向所述外部存储器提交之前存储在DRAM中。
8.一种事务提交的装置,包括:
接收模块,用于接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括1个空闲的存储单元,M和N为整数,0<M≤N;
获取模块,用于若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据;
写入模块,用于确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
9.如权利要求8所述的装置,其特征在于,所述获取模块还用于获取版本号计数器的当前计数值;将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计数器的当前计数值加1。
10.如权利要求8或9所述的装置,其特征在于,所述获取模块包括:
获取单元,用于获取写入所述外部存储器的写操作地址;
确定单元,用于计算每个写操作地址所属的组的组号,若计算得到的组号不重复,则确定每个组上待写入的数据块的数量满足小于2。
11.如权利要求10所述的装置,其特征在于,所述写入模块还用于将第X个数据块的指针指向第X+1个数据块所在的组的物理地址,其中,第M个数据块的指针指向第1个数据块所在的组的物理地址,M为整数,0<X≤M-1。
12.如权利要求11所述的装置,其特征在于,还包括:
映射模块,用于获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
13.如权利要求12所述的装置,其特征在于,还包括:
定位模块,用于接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRAM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
14.如权利要求8所述的装置,其特征在于,所述事务关联的M个数据块在向所述外部存储器提交之前存储在DRAM中。
CN201410579796.0A 2014-10-25 2014-10-25 一种事务提交的方法和装置 Active CN105630695B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410579796.0A CN105630695B (zh) 2014-10-25 2014-10-25 一种事务提交的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410579796.0A CN105630695B (zh) 2014-10-25 2014-10-25 一种事务提交的方法和装置

Publications (2)

Publication Number Publication Date
CN105630695A CN105630695A (zh) 2016-06-01
CN105630695B true CN105630695B (zh) 2018-11-09

Family

ID=56045664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410579796.0A Active CN105630695B (zh) 2014-10-25 2014-10-25 一种事务提交的方法和装置

Country Status (1)

Country Link
CN (1) CN105630695B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281542A (zh) * 2008-05-09 2008-10-08 华为技术有限公司 一种文件存储方法及装置
CN103246519A (zh) * 2013-05-23 2013-08-14 清华大学 在闪存存储设备中提供通用事务支持的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703706B2 (en) * 2011-02-28 2017-07-11 Oracle International Corporation Universal cache management system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281542A (zh) * 2008-05-09 2008-10-08 华为技术有限公司 一种文件存储方法及装置
CN103246519A (zh) * 2013-05-23 2013-08-14 清华大学 在闪存存储设备中提供通用事务支持的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Atomic Write FTL for Robust Flash File System;Sunhwa PARK等;《IEEE Computer Society》;20050616;第155-160页 *
Flash存储技术;郑文静等;《计算机研究与发展》;20100415;第47卷(第4期);第716-726页 *

Also Published As

Publication number Publication date
CN105630695A (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
JP6832187B2 (ja) データストレージサブシステムにおけるキャッシングのための方法およびシステム
EP3710952B1 (en) Metadata journal in a distributed storage system
US8943266B2 (en) Storage system and method of control for storage system
CN107526546B (zh) 一种Spark分布式计算数据处理方法及系统
US9292434B2 (en) Method and apparatus for restoring flash translation layer (FTL) in non-volatile storage device
CN110114758A (zh) 存储器的针对性清除
CN105917318A (zh) 用于实现基于ssd的i/o高速缓存的系统和方法
CN108447516A (zh) 存取快闪存储器中存储单元的方法以及使用该方法的装置
KR20120068454A (ko) 원격 페이지 폴트 처리 장치 및 그 방법
US10346048B2 (en) Electronic system with storage management mechanism and method of operation thereof
US11093410B2 (en) Cache management method, storage system and computer program product
CN103218270B (zh) 具有多个固态盘的计算机
CN108664213A (zh) 基于分布式缓存的原子写命令处理方法与固态存储设备
CN109634974A (zh) 一种数据处理方法、系统及相关组件
US10754569B2 (en) Methods to reduce storage capacity
CN113641596A (zh) 缓存管理方法、缓存管理装置、处理器
CN109240943A (zh) 地址映射关系反馈方法、装置、设备及可读存储介质
CN109313593A (zh) 存储系统
CN107797755A (zh) 固态硬盘系统的原子写入方法以及使用该方法的装置
CN107526533B (zh) 存储管理方法及设备
CN108664214A (zh) 用于固态存储设备的分布式缓存的掉电处理方法与装置
KR20220162605A (ko) 메모리 시스템에서 페이지 마이그레이션을 위한 시스템, 방법 및 장치
CN109416664A (zh) 增强的地址空间布局随机化
CN108628760A (zh) 原子写命令的方法与装置
CN105630695B (zh) 一种事务提交的方法和装置

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