本发明实施例涉及数据库技术领域,尤其涉及一种事务管理方法、装置、设备和存储介质。
背景技术:
多版本并发控制(multi-versionconcurrencycontrol,mvcc)是提升数据库并发性能的一种重要技术手段,能使数据库在保证数据一致性的前提下,提供高并发的读写访问性能,目前各主流数据库管理系统基本都实现了mvcc机制。
多版本并发控制的关键是可见性判断,找到对当前事务可见的特定版本数据。目前,一种常用的方法是通过活动事务表确定事务的可见性,在事务启动时收集这一时刻所有活动事务的事务号(事务id)构建活动事务表,并记录系统中即将产生的事务号,根据物理记录中的历史事务号、当前事务号和活动事务表实现可见性判断。其中构建活动事务表在单机环境下比较简单,可直接构建,在数据库集群环境下则通常采用一个节点为控制节点通过集中控制方式管理全局活动事务信息,但是在集群环境下节点数增加且并发事务增多的情况下,这种集中控制方式必然会造成性能瓶颈。
技术实现要素:
本发明实施例提供一种事务管理方法、装置、设备和存储介质,以优化数据库集群环境下的事务管理方案,提高事务管理性能。
第一方面,本发明实施例提供了一种事务管理方法,包括:
获取事务启动请求,所述事务启动请求中包括当前节点号;
根据所述当前节点号对应的第一活动事务信息,确定当前事务号以及所述当前事务号的第二活动事务信息,其中,所述第一活动事务信息存储在所述当前节点号对应的当前节点中;
根据所述当前事务号、所述第二活动事务信息以及目标物理记录中的目标事务号,对所述目标物理记录进行可见性判断,得到可见性判断结果;
根据所述可见性判断结果执行所述当前事务号对应的当前事务。
第二方面,本发明实施例还提供了一种事务管理装置,包括:
事务启动模块,用于获取事务启动请求,所述事务启动请求中包括当前节点号;
事务信息确定模块,用于根据所述当前节点号对应的第一活动事务信息,确定当前事务号以及所述当前事务号的第二活动事务信息,其中,所述第一活动事务信息存储在所述当前节点号对应的当前节点中;
可见性判断模块,根据所述当前事务号、所述第二活动事务信息以及目标物理记录中的目标事务号,对所述目标物理记录进行可见性判断,得到可见性判断结果;
事务执行模块,根据所述可见性判断结果执行所述当前事务号对应的当前事务。
第三方面,本发明实施例还提供了一种设备,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的事务管理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的事务管理装置。
本发明实施例提供的事务管理方案,获取事务启动请求,事务启动请求中包括当前节点号;根据当前节点号对应的第一活动事务信息,确定当前事务号以及当前事务号的第二活动事务信息;根据当前事务号、第二活动事务信息以及目标物理记录中的目标事务号,对目标物理记录进行可见性判断,得到可见性判断结果;根据可见性判断结果执行当前事务号对应的当前事务。采用上述技术方案,由于每个节点均存储有活动事务信息,每个节点上的多个事务启动时不需要与控制节点交互,即可实现可见性判断,进而基于可见性判断结果执行事务,在保证数据一致性的基础上,提高数据库集群环境下的事务管理性能。
附图说明
图1为本发明实施例提供的一种事务管理方法的流程图;
图2为本发明实施例提供的一种事务提交的示意图;
图3为本发明实施例提供的另一种事务管理方法的流程图;
图4为本发明实施例提供的一种事务管理装置的结构示意图;
图5为本发明实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
图1为本发明实施例提供的一种事务管理方法的流程图,本实施例可适用于实现数据库集群环境下的事务管理的情况,该方法可以由事务管理装置执行,该装置可以采用软件和/或硬件的方式实现,该装置可配置于电子设备中,例如服务器或终端设备,典型的终端设备包括移动终端,具体包括手机、电脑或平板电脑等。如图1所示,该方法具体可以包括:
s110、获取事务启动请求,事务启动请求中包括当前节点号。
其中,事务启动请求用于在当前节点号对应的当前节点中启动对数据页的具体操作,本实施例中对事务的具体类型(即操作的具体类型)不作限定,例如事务可以为对数据页中数据的增加、删除、修改和查询等。
本实施例中,当用户第一次或在上一事务结束后对数据库集群中的一个数据页进行操作时,则可以确定获取到事务启动请求。
现有技术中,通过指定一个节点为控制节点管理全局活动事务信息,任意节点中事务启动时执行以下操作:请求节点往控制节点发送请求,申请当前事务号;控制节点接收到请求之后,将即将产生的事务号作为当前事务号,并将即将产生的事务号加一作为新的即将产生的事务号,并将当前事务号加入活动事务表;控制节点收集所有活动事务的事务号,将当前事务号、活动事务的事务号数组和新的即将产生的事务号一起返回请求节点;请求节点将当前事务号作为事务号(即事务id),利用活动事务的事务号数组构建活动事务表,记录新的即将产生的事务号。当事务销毁时,例如提交或回滚,执行以下操作:请求节点往控制节点发送请求,销毁当前事务号;控制节点接收到请求后,从活动事务表中删除对应的当前事务号。上述集中控制方式在节点数较多时,与控制节点之间的交互增加,为了解决上述集中控制方式造成性能瓶颈的问题,本实施例中在每个节点中均维护一个第一活动事务信息,以进行活动事务管理。
s120、根据当前节点号对应的第一活动事务信息,确定当前事务号以及当前事务号的第二活动事务信息,其中,第一活动事务信息存储在当前节点号对应的当前节点中。
第一活动事务信息为当前节点中维护的数据库集群内的活动事务信息,数据库集群内包括的节点的数量可以为多个,具体数量本实施例中不作限定。第一活动事务信息存储在当前节点号对应的当前节点中,本实施例的方法针对当前需要进行具体事务的当前节点,而数据库集群中的每个节点均如当前节点存储有对应的第一活动事务信息。
第一活动事务信息中可以包括当前待生成事务号,该当前待生成事务号可以理解为当前节点对应的即将生成的事务号。此外,第一活动事务信息中还可以包括全局活动事务表数组、远程活动事务表数组和远程待生成事务号数组,远程活动事务表数组、远程待生成事务号数组与当前节点之外的其他节点相对应。全局活动事务表数组可以理解为当前节点的活动事务表数组,用于存储当前节点内的活动事务。而远程活动事务表数组用于存储除当前节点之外的其他节点对应的活动事务表,远程待生成事务号数组用于存储除当前节点之外的其他节点对应的待生成事务号。
本实施例中,当前节点的当前待生成事务号与节点数量的求余结果等于当前节点号,例如节点数量为3,当前节点号为1,则当前节点的当前待生成事务号可能为4。可以理解的是,每个节点对应的待生成事务号也满足上述与节点数量的求余结果等于节点号,可以确保不同节点分配的当前事务号不会冲突,并且可以直接判断当前事务号属于哪个节点。
本实施例中,根据当前节点号对应的第一活动事务信息,确定当前事务号以及当前事务号的第二活动事务信息,可以包括:将第一活动事务信息中的当前待生成事务号确定为当前事务号;将当前事务号存储进全局活动事务表数组中,并将当前待生成事务号与节点数量的和值确定为新的当前待生成事务号;确定当前事务号的第二活动事务信息,第二活动事务信息包括新的当前待生成事务号、存储有当前事务号的全局活动事务表数组、远程活动事务表数组和远程待生成事务号数组。其中,第一活动事务信息和第二活动事务信息均存储在内存中,第一活动事务信息存储在当前节点对应的内存结构中,而第二活动事务信息根据上述第一活动事务信息生成之后存储在当前事务对应的内存结构中,即第一活动事务信息和第二活动事务信息在内存中存储的位置不同。在当前事务存续期间,当前节点的第一活动事务信息可能会发生改变(如其他事务提交后删除自身对应事务号),而当前事务的第二活动事务信息在当前事务存续期间不会发生改变。
示例性的,第一活动事务信息中的当前待生成事务号local_next_tid作为当前事务号trx_id,将trx_id加入全局活动事务表数组local_trx_arr中,并将当前待生成事务号local_next_tid加上节点数量n_ep作为新的local_next_tid。
本实施例中,针对每个事务存储对应的活动事务信息,针对当前事务的第二活动事务信息包括新的当前待生成事务号、存储有当前事务号的全局活动事务表数组、远程活动事务表数组和远程待生成事务号数组。例如,当前事务对应的第二活动事务信息可以包括全局活动事务表数组local_trx_arr和远程活动事务表数组remote_trx_arr[n],其中n=0,1,2,…,n_ep-1,n_ep为节点数量;针对任意一个节点号为k的节点(k≤n_ep-1),其远程活动事务表数组中节点号k对应的remote_trx_arr[k]为空,其他的remote_trx_arr[n]就对应节点号为n的节点的远程活动事务表。
s130、根据当前事务号、第二活动事务信息以及目标物理记录中的目标事务号,对目标物理记录进行可见性判断,得到可见性判断结果。
其中,目标物理记录为当前操作所对应数据页的上一历史事务的记录,目标事务号为上一历史事务对应的事务号。可见性判断是指对物理记录相对于当前事务是否可见的判断,即当前事务执行时是否需要考虑上一次的物理记录。
具体的,根据当前事务号、第二活动事务信息以及目标物理记录中的目标事务号,对目标物理记录进行可见性判断,得到可见性判断结果,可以包括:根据目标事务号和节点数量确定目标事务号对应的目标节点号;根据目标节点号在第二活动事务信息中进行匹配,确定对应的目标活动事务表;根据当前事务号、目标事务号以及目标活动事务表,对目标物理记录进行可见性判断,得到可见性判断结果。其中,将目标事务号和节点数量的求余结果确定为目标事务号对应的目标节点号。
进一步的,根据当前事务号、目标事务号以及目标活动事务表,对目标物理记录进行可见性判断,得到可见性判断结果,包括:如果目标事务号与当前事务号相同,或者,同时满足目标事务号与当前事务号不同、目标活动事务表中不包括目标事务号以及目标事务号小于目标节点号对应的目标待生成事务号,则目标物理记录的可见性判断结果为可见。
如果目标事务号与当前事务号相同时,则可以说明是当前事务修改的物理记录,目标物理记录可见。如果目标事务号与当前事务号不同,则当目标节点号对应的活动事务表中不包括目标事务号,且目标事务号小于目标节点号对应的目标待生成事务号,则该目标物理记录可见。
进一步的,根据当前事务号、目标事务号以及目标活动事务表,对目标物理记录进行可见性判断,得到可见性判断结果,可以包括:如果同时满足目标事务号与当前事务号不同以及目标活动事务表中包括目标事务号,或者,同时满足目标事务号与当前事务号不同以及目标事务号大于或等于目标节点号对应的目标待生成事务号,则目标物理记录的可见性判断结果为不可见。
可以理解的是,当目标节点号为当前节点时,目标节点号对应的活动事务表即为全局活动事务表数组,目标节点号对应的待生成事务号即为新的当前待生成事务号,新的当前待生成事务号为当前待生成事务号加节点数量。
s140、根据可见性判断结果执行当前事务号对应的当前事务。
当目标物理记录的可见性判断结果为可见时,则基于目标物理记录的上一历史事务的结果,执行当前事务号对应的当前事务。当目标物理记录的可见性判断结果为不可见时,则不考虑目标物理记录,直接执行当前事务。示例性的,假设目标物理记录对应的上一历史事务是在数据页中删除数据a,当前事务为查询该数据页中所有数据,若目标物理记录的可见性判断结果为可见,则当前事务的查询结果不包括该数据a,若目标物理记录的可见性判断结果为不可见,则当前事务的查询结果中包括该数据a。
当数据库集群中物理记录的可见性判断结果不同时,执行当前事务之后的结果可能会不同,通过可见性判断,能够保证数据的一致性。
本发明实施例提供的事务管理方案,获取事务启动请求,事务启动请求中包括当前节点号;根据当前节点号对应的第一活动事务信息,确定当前事务号以及当前事务号的第二活动事务信息;根据当前事务号、第二活动事务信息以及目标物理记录中的目标事务号,对目标物理记录进行可见性判断,得到可见性判断结果;根据可见性判断结果执行当前事务号对应的当前事务。采用上述技术方案,由于每个节点均存储有活动事务信息,每个节点上的多个事务启动时不需要与控制节点交互,即可实现可见性判断,进而基于可见性判断结果执行事务,在保证数据一致性的基础上,提高数据库集群环境下的事务管理性能。
在一些实施例中,根据可见性判断结果执行当前事务号对应的当前事务之后,还包括:提交当前事务,删除全局活动事务表数组中的当前事务号;控制当前节点广播删除之后的全局活动事务表数组和新的当前待生成事务号给除当前节点之外的其他节点;当确定当前节点接收到其他节点的响应消息时,确定提交完成。上述事务提交之后,可以实现在活动事务信息中将已经不活动的当前事务销毁,以执行后续操作。
示例性的,图2为本发明实施例提供的一种事务提交的示意图,参见图2,对于节点y,执行当前事务之后的事务提交过程可以包括:节点y进行事务提交,全局活动事务表数组local_trx_arr中删除当前事务号trx_id,广播删除之后的全局活动事务表数组local_trx_arr和新的当前待生成事务号local_next_tid。除节点y之外的其他节点接收到节点y广播的消息,保存全局活动事务表数组在remote_trx_arr[y],保存当前待生成事务号在remote_next_tid[y],然后响应节点y。节点y接收到除节点y之外的所有其他节点的响应消息时,则确定提交完成,进行事务提交后续操作。
在一些实施例中,根据可见性判断结果执行当前事务号对应的当前事务之后,还包括对当前事务进行事务回滚,删除第一活动事务表中的当前事务号,但不广播活动事务信息。因为如果在当前事务启动后有过广播,在其他节点的缓存中当前事务号已经在活动事务表中,而如果当前事务启动后没有广播,在其他节点的缓存中待生成事务号肯定大于当前事务号。上述两种情况下,当前事务对应的物理记录的可见性判断结果均为不可见,故当前事务回滚时不需要广播活动事务信息。
图3为本发明实施例提供的另一种事务管理方法的流程图。本实施例在上述实施例的基础上,进一步优化了上述事务管理方法。相应的,如图3所示,本实施例的方法具体包括:
s201、获取事务启动请求。
其中,事务启动请求中包括当前节点号。
s202、将第一活动事务信息中的当前待生成事务号确定为当前事务号。
s203、将当前事务号存储进全局活动事务表数组中,并将当前待生成事务号与节点数量的和值确定为新的当前待生成事务号,确定当前事务号的第二活动事务信息。
其中,第一活动事务信息存储在当前节点。第一活动事务信息中可以包括上述当前待生成事务号,还可以包括全局活动事务表数组、远程活动事务表数组和远程待生成事务号数组,远程活动事务表数组、远程待生成事务号数组与当前节点之外的其他节点相对应,当前待生成事务号与节点数量的求余结果等于当前节点号。
示例性的,每个节点均维护第一活动事务信息,节点数量为n_ep,包括全局活动事务表数组local_trx_arr和当前待生成事务号local_next_tid,并且维护所有其他n_ep-1个节点的远程活动事务表数组remote_trx_arr[n]以及待生成事务号的数组,待生成事务号的数组为远程待生成事务号数组remote_next_tid[n],其中n=0,1,2,…,n_ep-1,n_ep为节点数量。
第二活动事务信息包括新的当前待生成事务号、存储有当前事务号的全局活动事务表数组、远程活动事务表数组和远程待生成事务号数组。
s204、根据目标事务号和节点数量确定目标事务号对应的目标节点号。
将目标事务号和节点数量的求余结果确定为目标事务号对应的目标节点号。
示例性的,目标事务号为5,节点数量为3,则目标事务号%节点数量的值为2,目标节点号为2。
s205、根据目标节点号在第二活动事务信息中进行匹配,确定对应的目标活动事务表。
若目标节点号对应的节点为当前节点,则目标活动事务表为全局活动事务表数组;若目标节点号对应的节点不是当前节点,则从远程活动事务表数组中确定该目标节点号对应的目标活动事务表。
s206、目标事务号与当前事务号是否相同,若是,则执行s209;否则,执行s207。
示例性的,目标物理记录的目标事务号trxid等于当前事务号,说明是当前事务修改的物理记录,目标物理记录可见;否则执行s207。
s207、目标活动事务表中是否包括目标事务号,若是,则执行s210;否则,执行s208。
示例性的,根据目标物理记录的目标事务号trxid与节点数量n_ep的求余结果,即trxid%n_ep的值,得到trxid所属节点号,假设是y;如果y就是当前节点,则直接查找全局活动事务表数组local_trx_arr和比较当前待生成事务号local_next_tid,否则比较活动事务表remote_trx_arr[y]和待生成事务号remote_next_tid[y];物理记录的trxid不在remote_trx_arr[y]或者local_trx_arr中,则执行s208;物理记录的trxid在remote_trx_arr[y]或者local_trx_arr中,则执行s210。
s208、目标事务号是否小于目标节点号对应的目标待生成事务号,若是,则执行s209;否则,执行s210。
示例性的,目标物理记录的目标事务号trxid小于remote_next_tid[y]或者local_next_tid,说明修改该目标物理记录的事务已经提交,执行s209;如果目标物理记录的目标事务号trxid大于或等于remote_next_tid[y]或者local_next_tid,则执行s210。
s209、目标物理记录的可见性判断结果为可见。
如果目标事务号与当前事务号相同,或者,同时满足目标事务号与当前事务号不同、目标节点号对应的目标活动事务表中不包括目标事务号以及目标事务号小于目标节点号对应的目标待生成事务号,则说明目标物理记录的事务已经提交,该目标物理记录可见。s209之后,执行s211。
s210、目标物理记录的可见性判断结果为不可见。
如果同时满足目标事务号与当前事务号不同以及目标节点号对应的活动事务表中包括目标事务号,或者,同时满足目标事务号与当前事务号不同以及目标事务号大于或等于目标节点号对应的待生成事务号,则说明修改该目标物理记录的事务是活动的,目标物理记录不可见。s210之后,执行s211。
s211、根据可见性判断结果执行当前事务号对应的当前事务。
当目标物理记录的可见性判断结果为可见时,则基于目标物理记录的上一历史事务的结果,执行当前事务号对应的当前事务。当目标物理记录的可见性判断结果为不可见时,则不考虑目标物理记录,直接执行当前事务。
本发明实施例提供的事务管理方案,获取事务启动请求,将第一活动事务信息中的当前待生成事务号确定为当前事务号,将当前事务号存储进全局活动事务表数组中,并将当前待生成事务号与节点数量的和值确定为新的当前待生成事务号,确定当前事务号的第二活动事务信息,根据目标事务号和节点数量确定目标事务号对应的目标节点号,根据目标节点号在第二活动事务信息中进行匹配,确定对应的目标活动事务表;如果目标事务号与当前事务号相同,或者,同时满足目标事务号与当前事务号不同、目标节点号对应的目标活动事务表中不包括目标事务号以及目标事务号小于目标节点号对应的目标待生成事务号,则目标物理记录的可见性判断结果为可见;如果同时满足目标事务号与当前事务号不同以及目标节点号对应的活动事务表中包括目标事务号,或者,同时满足目标事务号与当前事务号不同以及目标事务号大于或等于目标节点号对应的待生成事务号,则目标物理记录的可见性判断结果为不可见;根据可见性判断结果执行当前事务号对应的当前事务。采用上述技术方案,由于每个节点均存储有活动事务信息,每个节点上的多个事务启动时不需要与控制节点交互,即可实现可见性判断,进而基于可见性判断结果执行事务,在保证数据一致性的基础上,提高数据库集群环境下的事务管理性能。
图4为本发明实施例提供的一种事务管理装置的结构示意图,本实施例可适用于实现共享存储数据库集群环境下的事务管理的情况。本发明实施例所提供的事务管理装置可执行本发明任意实施例所提供的事务管理方法,具备执行方法相应的功能模块和有益效果。该装置具体包括:
事务启动模块310,用于获取事务启动请求,所述事务启动请求中包括当前节点号;
事务信息确定模块320,用于根据所述当前节点号对应的第一活动事务信息,确定当前事务号以及所述当前事务号的第二活动事务信息,其中,所述第一活动事务信息存储在所述当前节点号对应的当前节点中;
可见性判断模块330,根据所述当前事务号、所述第二活动事务信息以及目标物理记录中的目标事务号,对所述目标物理记录进行可见性判断,得到可见性判断结果;
事务执行模块340,根据所述可见性判断结果执行所述当前事务号对应的当前事务。
本发明实施例提供的事务管理方案,获取事务启动请求,事务启动请求中包括当前节点号;根据当前节点号对应的第一活动事务信息,确定当前事务号以及当前事务号的第二活动事务信息;根据当前事务号、第二活动事务信息以及目标物理记录中的目标事务号,对目标物理记录进行可见性判断,得到可见性判断结果;根据可见性判断结果执行当前事务号对应的当前事务。采用上述技术方案,由于每个节点均存储有活动事务信息,每个节点上的多个事务启动时不需要与控制节点交互,即可实现可见性判断,进而基于可见性判断结果执行事务,在保证数据一致性的基础上,提高数据库集群环境下的事务管理性能。
可选的,所述第一活动事务信息包括当前待生成事务号、全局活动事务表数组、远程活动事务表数组和远程待生成事务号数组,其中,所述远程活动事务表数组、所述远程待生成事务号数组与所述当前节点之外的其他节点相对应,所述当前待生成事务号与节点数量的求余结果等于所述当前节点号。
可选的,所述事务信息确定模块320具体用于:
将所述第一活动事务信息中的所述当前待生成事务号确定为所述当前事务号;
将所述当前事务号存储进所述全局活动事务表数组中,并将所述当前待生成事务号与节点数量的和值确定为新的当前待生成事务号;
确定所述当前事务号的第二活动事务信息,所述第二活动事务信息包括所述新的当前待生成事务号、存储有所述当前事务号的所述全局活动事务表数组、所述远程活动事务表数组和所述远程待生成事务号数组。
可选的,所述可见性判断模块330包括:
节点号确定单元,用于根据所述目标事务号和节点数量确定所述目标事务号对应的目标节点号;
事务表确定单元,用于根据所述目标节点号在所述第二活动事务信息中进行匹配,确定对应的目标活动事务表;
判断单元,用于根据所述当前事务号、所述目标事务号以及目标活动事务表,对所述目标物理记录进行可见性判断,得到可见性判断结果。
可选的,所述判断单元具体用于:
如果所述目标事务号与所述当前事务号相同,或者,同时满足所述目标事务号与所述当前事务号不同、所述目标活动事务表中不包括所述目标事务号以及所述目标事务号小于所述目标节点号对应的目标待生成事务号,则所述目标物理记录的可见性判断结果为可见。
可选的,所述判断单元具体用于:
如果同时满足所述目标事务号与所述当前事务号不同以及所述目标活动事务表中包括所述目标事务号,或者,同时满足所述目标事务号与所述当前事务号不同以及所述目标事务号大于或等于所述目标节点号对应的目标待生成事务号,则所述目标物理记录的可见性判断结果为不可见。
可选的,所述装置还包括事务提交模块,所述事务提交模块具体用于:根据所述可见性判断结果执行所述当前事务号对应的当前事务之后,
提交所述当前事务,删除所述全局活动事务表数组中的所述当前事务号;
控制所述当前节点广播删除之后的全局活动事务表数组和新的当前待生成事务号给除所述当前节点之外的其他节点;
当确定所述当前节点接收到其他节点的响应消息时,确定提交完成。
本发明实施例所提供的事务管理装置可执行本发明任意实施例所提供的事务管理方法,具备执行方法相应的功能模块和有益效果。
图5为本发明实施例提供的一种设备的结构示意图。图5示出了适于用来实现本发明实施方式的示例性设备412的框图。图5显示的设备412仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,设备412以通用设备的形式表现。设备412的组件可以包括但不限于:一个或者多个处理器416,存储装置428,连接不同系统组件(包括存储装置428和处理器416)的总线418。
总线418表示几类总线结构中的一种或多种,包括存储装置总线或者存储装置控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industrysubversivealliance,isa)总线,微通道体系结构(microchannelarchitecture,mac)总线,增强型isa总线、视频电子标准协会(videoelectronicsstandardsassociation,vesa)局域总线以及外围组件互连(peripheralcomponentinterconnect,pci)总线。
设备412典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备412访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储装置428可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(randomaccessmemory,ram)430和/或高速缓存存储器432。设备412可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统434可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘,例如只读光盘(compactdiscread-onlymemory,cd-rom),数字视盘(digitalvideodisc-readonlymemory,dvd-rom)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线418相连。存储装置428可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块442的程序/实用工具440,可以存储在例如存储装置428中,这样的程序模块442包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块442通常执行本发明所描述的实施例中的功能和/或方法。
设备412也可以与一个或多个外部设备414(例如键盘、指向终端、显示器424等)通信,还可与一个或者多个使得用户能与该设备412交互的终端通信,和/或与使得该设备412能与一个或多个其它计算终端进行通信的任何终端(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口422进行。并且,设备412还可以通过网络适配器420与一个或者多个网络(例如局域网(localareanetwork,lan),广域网(wideareanetwork,wan)和/或公共网络,例如因特网)通信。如图5所示,网络适配器420通过总线418与设备412的其它模块通信。应当明白,尽管图中未示出,可以结合设备412使用其它硬件和/或软件模块,包括但不限于:微代码、终端驱动器、冗余处理器、外部磁盘驱动阵列、磁盘阵列(redundantarraysofindependentdisks,raid)系统、磁带驱动器以及数据备份存储系统等。
处理器416通过运行存储在存储装置428中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的事务管理方法,该方法包括:
获取事务启动请求,所述事务启动请求中包括当前节点号;
根据所述当前节点号对应的第一活动事务信息,确定当前事务号以及所述当前事务号的第二活动事务信息,其中,所述第一活动事务信息存储在所述当前节点号对应的当前节点中;
根据所述当前事务号、所述第二活动事务信息以及目标物理记录中的目标事务号,对所述目标物理记录进行可见性判断,得到可见性判断结果;
根据所述可见性判断结果执行所述当前事务号对应的当前事务。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的事务管理方法,该方法包括:
获取事务启动请求,所述事务启动请求中包括当前节点号;
根据所述当前节点号对应的第一活动事务信息,确定当前事务号以及所述当前事务号的第二活动事务信息,其中,所述第一活动事务信息存储在所述当前节点号对应的当前节点中;
根据所述当前事务号、所述第二活动事务信息以及目标物理记录中的目标事务号,对所述目标物理记录进行可见性判断,得到可见性判断结果;
根据所述可见性判断结果执行所述当前事务号对应的当前事务。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或终端上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
1.一种事务管理方法,其特征在于,包括:
获取事务启动请求,所述事务启动请求中包括当前节点号;
根据所述当前节点号对应的第一活动事务信息,确定当前事务号以及所述当前事务号的第二活动事务信息,其中,所述第一活动事务信息存储在所述当前节点号对应的当前节点中;
根据所述当前事务号、所述第二活动事务信息以及目标物理记录中的目标事务号,对所述目标物理记录进行可见性判断,得到可见性判断结果;
根据所述可见性判断结果执行所述当前事务号对应的当前事务。
2.根据权利要求1所述的方法,其特征在于,所述第一活动事务信息包括当前待生成事务号、全局活动事务表数组、远程活动事务表数组和远程待生成事务号数组,其中,所述远程活动事务表数组、所述远程待生成事务号数组与所述当前节点之外的其他节点相对应,所述当前待生成事务号与节点数量的求余结果等于所述当前节点号。
3.根据权利要求2所述的方法,其特征在于,根据所述当前节点号对应的第一活动事务信息,确定当前事务号以及所述当前事务号的第二活动事务信息,包括:
将所述第一活动事务信息中的所述当前待生成事务号确定为所述当前事务号;
将所述当前事务号存储进所述全局活动事务表数组中,并将所述当前待生成事务号与节点数量的和值确定为新的当前待生成事务号;
确定所述当前事务号的第二活动事务信息,所述第二活动事务信息包括所述新的当前待生成事务号、存储有所述当前事务号的所述全局活动事务表数组、所述远程活动事务表数组和所述远程待生成事务号数组。
4.根据权利要求2所述的方法,其特征在于,根据所述当前事务号、所述第二活动事务信息以及目标物理记录中的目标事务号,对所述目标物理记录进行可见性判断,得到可见性判断结果,包括:
根据所述目标事务号和节点数量确定所述目标事务号对应的目标节点号;
根据所述目标节点号在所述第二活动事务信息中进行匹配,确定对应的目标活动事务表;
根据所述当前事务号、所述目标事务号以及目标活动事务表,对所述目标物理记录进行可见性判断,得到可见性判断结果。
5.根据权利要求4所述的方法,其特征在于,根据所述当前事务号、所述目标事务号以及目标活动事务表,对所述目标物理记录进行可见性判断,得到可见性判断结果,包括:
如果所述目标事务号与所述当前事务号相同,或者,同时满足所述目标事务号与所述当前事务号不同、所述目标活动事务表中不包括所述目标事务号以及所述目标事务号小于所述目标节点号对应的目标待生成事务号,则所述目标物理记录的可见性判断结果为可见。
6.根据权利要求4所述的方法,其特征在于,根据所述当前事务号、所述目标事务号以及目标活动事务表,对所述目标物理记录进行可见性判断,得到可见性判断结果,包括:
如果同时满足所述目标事务号与所述当前事务号不同以及所述目标活动事务表中包括所述目标事务号,或者,同时满足所述目标事务号与所述当前事务号不同以及所述目标事务号大于或等于所述目标节点号对应的目标待生成事务号,则所述目标物理记录的可见性判断结果为不可见。
7.根据权利要求3所述的方法,其特征在于,根据所述可见性判断结果执行所述当前事务号对应的当前事务之后,还包括:
提交所述当前事务,删除所述全局活动事务表数组中的所述当前事务号;
控制所述当前节点广播删除之后的全局活动事务表数组和新的当前待生成事务号给除所述当前节点之外的其他节点;
当确定所述当前节点接收到其他节点的响应消息时,确定提交完成。
8.一种事务管理装置,其特征在于,包括:
事务启动模块,用于获取事务启动请求,所述事务启动请求中包括当前节点号;
事务信息确定模块,用于根据所述当前节点号对应的第一活动事务信息,确定当前事务号以及所述当前事务号的第二活动事务信息,其中,所述第一活动事务信息存储在所述当前节点号对应的当前节点中;
可见性判断模块,根据所述当前事务号、所述第二活动事务信息以及目标物理记录中的目标事务号,对所述目标物理记录进行可见性判断,得到可见性判断结果;
事务执行模块,根据所述可见性判断结果执行所述当前事务号对应的当前事务。
9.一种设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的事务管理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的事务管理方法。
技术总结