一种事务提交的方法和装置的制造方法_3

文档序号:9865420阅读:来源:国知局
[0075]可选的,在本发明的一些实施例中,当装置判处外部存储器的每个组均没有溢出后,获取版本号计数器的当前计数值;将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计时器的当前计数值加I。版本号计数器用于记录事务的版本号。
[0076]S206、采用日志方式提交所述事务关联的M个数据块。
[0077]其中,装置可采用WAL方式提交事务关联的M个数据块,或者采用现有技术中其他类型的日志方式提交事务关联的M个数据块,本发明不作限制。
[0078]S207、确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
[0079]具体的,装置确定M个数据块写入的组,由于外部存储器中的组没有发生溢出,M个数据块的写操作地址落入外部存储器中M个不同的组内,M个数据块的将每个数据块和该数据块关联的元数据写入各自对应的组的空闲的存储单元中。如果事务关联的M个数据块都正确写入各组对应的组的空闲的存储单元中,则事务提交成功;如果事务关联的M个数据块至少一个数据块未正确写入各自对应的组的空闲的存储单元中,执行事务回滚。
[0080]可选的,在本发明的一些实施例中,M个数据块成功写入外部存储器中后,装置将第X个数据块的指针指向第X+1个数据块所在的组的物理地址,其中,第M个数据块的指针指向第I个数据块所在的组的物理地址,M为整数,O < X ^M-10
[0081]这样,当系统崩溃,需要重构数据时,每一个组内仅有最大的版本号的数据块可能是提交未完成的数据块,装置需要进一步检查这个数据块是否已经提交,如果通过追踪这个数据块的元数据能形成一个环,或者追踪到一个组,其版本号不是最大的,那么这个数据块就提交成功,否则,这个数据块提交失败,是一个无效的数据块。
[0082]S208、获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
[0083]具体的,组中占用的存储单元指存储有数据块的存储单元,装置获取存储有数据块的存储单元的组物理地址和组逻辑地址,组物理地址指存储单元位于组中的物理地址,组逻辑地址指存储单元位于组中的逻辑地址,建立组中的至少一个存储单元的组逻辑地址和组物理地址的映射关系,将映射关系存储至DRAM的映射表中。
[0084]示例性的,参见图3,DRAM存储有事务关联的M个数据块,M个数据块写入SCM的N个组中,SCM的每个组包含I个空闲的存储单元和6个占用的存储单元,假设SCM的N个组中每个组上待写入的数据块的数量不超过1,即每个组没有发生溢出,M个数据块成功写Λ SCM中不用的组的空闲的存储单元中。装置获取组i中的占用的存储单元为第I至第4个存储单元、第5个和第6个存储单元,上述6个存储单元的组逻辑地址分别为A、B、C、D、E和F,组逻辑地址分别为000、010、100、011、110和101,建立组i内的存储单元的组逻辑地址和组物理地址的映射关系,并将映射关系存储至DRAM的映射表中。
[0085]需要说明的是,S208执行的顺序在本发明实施例中不作限制,可以在事务提交完成后执行,也可以是接收到触发指令后再执行。
[0086]S209、接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRAM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
[0087]具体的,参加图4为查询外部存储器中目标数据块的过程,其中,AMF(AlgebraicMapping Funct1n)指的是代数映射函数,GMT (Group based Mapping Table)指基于分组的映射表。S1:对于一个给定的目标数据块,使用它的逻辑地址(LA,Logical Address)经过一个AMF代数映射函数去计算得到出它的组号(Group ID)和组逻辑地址(GLA,Groupbased Logical Address),通过查询在DRAM中的映射表将GLA转换成基于组的物理地址(GPA,Group based Physical Address)。GPA和Group ID组合起来就是目标数据块的实际存放地址。
[0088]实施本发明的实施例,外部存储器划分为多个组,每个组包括I个空闲的存储单元,当需要提交事务时,判断外部存储器的每个组上待写入的数据块的数据是否满足小于2,若为是,将事务关联的多个数据块写入各自对应的组的空闲的存储单元中,这样有效的减少事务提交过程中对外部存储器的刷写次数,提高了事务提交的吞吐量。
[0089]参加图5,为本发明第一实施例提供的一种事务提交的装置的结构示意图,在本发明实施例中,所述装置包括接收模块10、获取模块11和写入模块12。
[0090]接收模块,用于接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括I个空闲的存储单元,M和N为整数,O< M ^ No
[0091]获取模块,用于若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据。
[0092]写入模块,用于确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
[0093]本发明实施例和方法实施例一基于同一构思,其带来的技术效果也相同,具体请参照过程实施例一的描述,此处不再赘述。
[0094]参加图6和图7,为本发明第二实施例提供的一种事务提交的装置的结构示意图,在本发明实施例中,所述装置除包括接收模块10、获取模块11和写入模块12之外,还包括:映射模块13和定位模块14。
[0095]映射模块13,用于获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
[0096]定位模块14,用于接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRRM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
[0097]可选的,获取模块11还用于获取版本号计数器的当前计数值;将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计时器的当前计数值加I。
[0098]可选的,获取模块11包括:获取单元111和确定单元112。
[0099]获取单元111,用于获取写入所述外部存储器的写操作地址;
[0100]确定单元112,用于计算每个写操作地址所属的组的组号,若计算得到的组号不重复,则确定每个组上待写入的数据块的数量满足小于2。
[0101]可选的,写入模块12还用于将第X个数据块的指针指向第X+1个数据块所在的组的物理地址,其中,第M个数据块的指针指向第I个数据块所在的组的物理地址,M为整数,O < X ^ M-1o
[0102]可选的,所述事务关联的M个数据块在向所述外部存储器提交之前存储在DRAM中。
[0103]本发明实施例和方法实施例二基于同一构思,其带来的技术效果也相同,具体过程请参照方法实施例二的描述,此处不再赘述。
[0104]参加图8,为本发明第三实施例提供的一种事务提交的装置的结构示意图,在本发明实施例中,装置I包括处理器61、存储器62和通信接口 63,通信接口 61链接外部存储器,装置I中的处理器61的数量可以是一个或多个,图8以一个处理器为例。本发明的一些实施例中,处理器61、存储器62和通信接口 63可通过总线或其他方式连接,图8中以总线连接为例。
[0105]其中,存储器62中存储一组程序代码,且处理器61用于调用存储器62中存储的程序代码,用于执行以下操作:
[0106]接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括I个空闲的存储单元,M和N为整数,O < M < N ;
[0107]若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据;
[0108]确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1