System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据处理领域,尤其涉及一种事务可见性检查方法、装置、设备和介质。
技术介绍
1、在现有的postgresql数据库系统(简称pg系统)中对事务进行可见性查验的机制基于活跃事务列表的快照,随着处理器核数的增长,可能的事务并发数也随之提升。
2、在事务并发数较大的情况下遍历pgxact(事务提交日志)和遍历xip(活跃事务)数组的代价越来越大。并且获取快照需要持有procarray锁(轻量锁),其并阻塞有活跃事务号的事务(通常为写事务)的结束。
3、因此,如何降低遍历的代价和procarray锁的影响是较为重要的问题。
技术实现思路
1、本申请提供一种事务可见性检查方法、装置、设备和介质,用以减少遍历和轻量锁的影响。
2、第一方面,本申请提供一种事务可见性检查方法,包括:
3、预先为事务分配序列号并将所述事务的序列号记录在提交顺序日志中;其中,若事务为正在运行的子事务,其对应的序列号包括第一标识以及其对应的父事务的事务号;若事务为父事务,其对应的序列号包括第二标识以及其对应的状态的标识;若事务为已提交的事务,其对应的序列号用于指示其对应的提交顺序;
4、当进行事务可见性判断时,从所述提交顺序日志中获取目标事务的序列号;
5、若所述目标事务的序列号包括第一标识,所述目标事务为子事务,根据所述目标事务的序列号获取所述目标事务的父事务,根据所述目标事务的父事务是否可见确定所述目标事务是否可见;
6、
7、若所述目标事务的序列号指示其对应的提交顺序,根据所述目标事务的序列号以及快照中记录的所述目标事务的序列号确定所述目标事务是否可见。
8、可选的,所述若所述目标事务的序列号包括第一标识,所述目标事务为子事务,根据所述目标事务的序列号获取所述目标事务的父事务,根据所述目标事务的父事务是否可见确定所述目标事务是否可见,具体包括:
9、若所述目标事务的序列号包括第一标识,所述目标事务为子事务,根据所述目标事务的序列号获取所述目标事务的父事务的事务号;
10、根据所述目标事务的父事务的事务号获取所述目标事务的父事务的序列号;
11、所述目标事务的父事务的序列号中包括正在运行的状态标识或已回滚的状态标识或已崩溃的状态标识,确定所述目标事务的父事务不可见,以确定所述目标事务不可见;
12、所述目标事务的父事务的序列号指示所述目标事务的父事务的提交顺序,确定所述目标事务的父事务可见,以确定所述目标事务可见。
13、可选的,所述若所述目标事务的序列号包括第二标识,所述目标事务为父事务,根据所述目标事务的序列号中的状态标识确定所述目标事务是否可见,具体包括:
14、若所述目标事务的序列号包括第二标识,所述目标事务为父事务;
15、所述目标事务的序列号中包括正在运行的状态标识或已回滚的状态标识或已崩溃的状态标识,确定所述目标事务不可见。
16、可选的,所述若所述目标事务的序列号指示其对应的提交顺序,根据所述目标事务的序列号以及快照中记录的所述目标事务的序列号确定所述目标事务是否可见,具体包括:
17、若所述目标事务的序列号指示其对应的提交顺序,将所述目标事务的序列号与快照中记录的所述目标事务的序列号进行比对;
18、若所述目标事务的序列号小于所述快照中记录的所述目标事务的序列号,确定所述目标事务可见;
19、若所述目标事务的序列号大于或等于所述快照中记录的所述目标事务的序列号,确定所述目标事务不可见。
20、可选的,所述事务为正在运行的子事务时,其对应的序列号包括64位,其中,首位为第一标识,最后32位为其对应的父事务的事务号,第2位至第31位为其事务号。
21、可选的,所述事务为父事务时,其对应的序列号为64位,其中,首位为第二标识,若所述事务为正在运行的事务,其对应的序列号的后63位包括第三标识,若所述事务为已回滚的事务,其对应的序列号的后63位包括第四标识,若所述事务为已崩溃的事务,其对应的序列号的后63位包括第五标识。
22、可选的,所述第二标识为0,所述第三标识为1,所述第四标识为2,所述第五标识为3。
23、第二方面,本申请提供一种事务可见性检查装置,所述装置,包括:
24、配置模块,用于预先为事务分配序列号并将所述事务的序列号记录在提交顺序日志中;其中,若事务为正在运行的子事务,其对应的序列号包括第一标识以及其对应的父事务的事务号;若事务为父事务,其对应的序列号包括第二标识以及其对应的状态的标识;若事务为已提交的事务,其对应的序列号用于指示其对应的提交顺序;
25、提取模块,用于当进行事务可见性判断时,从所述提交顺序日志中获取目标事务的序列号;
26、第一处理模块,用于若所述目标事务的序列号包括第一标识,所述目标事务为子事务,根据所述目标事务的序列号获取所述目标事务的父事务,根据所述目标事务的父事务是否可见确定所述目标事务是否可见;
27、第二处理模块,用于若所述目标事务的序列号包括第二标识,所述目标事务为父事务,根据所述目标事务的序列号中的状态标识确定所述目标事务是否可见;
28、第三处理模块,用于若所述目标事务的序列号指示其对应的提交顺序,根据所述目标事务的序列号以及快照中记录的所述目标事务的序列号确定所述目标事务是否可见。
29、第三方面,本申请提供一种电子设备,包括:存储器和处理器;
30、存储器用于存储指令;处理器用于调用存储器中的指令执行第一方面及第一方面任一种可能的设计中的方法。
31、第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机指令,当电子设备的至少一个处理器执行该计算机指令时,电子设备执行第一方面及第一方面任一种可能的设计中的方法。
32、第五方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机指令,当电子设备的至少一个处理器执行该计算机指令时,电子设备执行第一方面及第一方面任一种可能的设计中的方法。
33、本申请提供的事务可见性检查方法,预先为事务分配序列号并将事务的序列号记录在提交顺序日志中,若事务为正在运行的子事务,其对应的序列号包括第一标识以及其对应的父事务的事务号,若事务为父事务,其对应的序列号包括第二标识以及其对应的状态的标识,若事务为已提交的事务,其对应的序列号用于指示其对应的提交顺序;当进行事务可见性判断时,从提交顺序日志中获取目标事务的序列号,若目标事务的序列号包括第一标识,目标事务为子事务,根据目标事务的序列号获取目标事务的父事务,根据目标事务的父事务是否可见确定目标事务是否可见,若目标事务的序列号包括第二标识,目标事本文档来自技高网...
【技术保护点】
1.一种事务可见性检查方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述若所述目标事务的序列号包括第一标识,所述目标事务为子事务,根据所述目标事务的序列号获取所述目标事务的父事务,根据所述目标事务的父事务是否可见确定所述目标事务是否可见,具体包括:
3.根据权利要求1所述的方法,其特征在于,所述若所述目标事务的序列号包括第二标识,所述目标事务为父事务,根据所述目标事务的序列号中的状态标识确定所述目标事务是否可见,具体包括:
4.根据权利要求1所述的方法,其特征在于,所述若所述目标事务的序列号指示其对应的提交顺序,根据所述目标事务的序列号以及快照中记录的所述目标事务的序列号确定所述目标事务是否可见,具体包括:
5.根据权利要求1-4中任意一项所述的方法,其特征在于,所述事务为正在运行的子事务时,其对应的序列号包括64位,其中,首位为第一标识,最后32位为其对应的父事务的事务号,第2位至第31位为其事务号。
6.根据权利要求1-4中任意一项所述的方法,其特征在于,所述事务为父事务时,其对应的序列
7.根据权利要求6所述的方法,其特征在于,所述第二标识为0,所述第三标识为1,所述第四标识为2,所述第五标识为3。
8.一种事务可见性检查装置,其特征在于,所述装置,包括:
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机指令,所述计算机指令被处理器执行时用于实现如权利要求1至7中任一项所述的事务可见性检查方法。
...【技术特征摘要】
1.一种事务可见性检查方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述若所述目标事务的序列号包括第一标识,所述目标事务为子事务,根据所述目标事务的序列号获取所述目标事务的父事务,根据所述目标事务的父事务是否可见确定所述目标事务是否可见,具体包括:
3.根据权利要求1所述的方法,其特征在于,所述若所述目标事务的序列号包括第二标识,所述目标事务为父事务,根据所述目标事务的序列号中的状态标识确定所述目标事务是否可见,具体包括:
4.根据权利要求1所述的方法,其特征在于,所述若所述目标事务的序列号指示其对应的提交顺序,根据所述目标事务的序列号以及快照中记录的所述目标事务的序列号确定所述目标事务是否可见,具体包括:
5.根据权利要求1-4中任意一项所述的方法,其特征在于,所述事务为正在运行的子事务时,其对应的序列号包括64位,其中,首位为第一标识,最后32位为其对应的...
【专利技术属性】
技术研发人员:陈娜兰,杨尚,孙文奇,
申请(专利权)人:北京人大金仓信息技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。