一种事务并发控制方法技术

技术编号:39046878 阅读:21 留言:0更新日期:2023-10-10 11:59
本发明专利技术公开了一种事务并发控制方法,首先构建一套事务系统,事务系统中每个事务索引实时收集分区的数据项的事务特征信息并动态调整事务的分区,为每个分区选择合适的并发控制方法,生成一个并发控制计划,交给分区管理器,分区管理器根据并发控制计划调整事务索引中的数据分区,并向客户端分发并发控制计划,根据并发控制计划中的分区范围,和每个分区的并发控制方法来进行读写操作,完成自适应的事务并发控制方法。本发明专利技术的方法以基于数据项事务特征的自适应并发控制机制,动态地根据事务规模,冲突率等特征动态选择合适的并发控制方法,均衡了节点之间的负载,有效应对了实时多变的事务类型和不同的工作负载。变的事务类型和不同的工作负载。变的事务类型和不同的工作负载。

【技术实现步骤摘要】
一种事务并发控制方法


[0001]本专利技术属于分布式数据库
,具体涉及一种事务并发控制方法。

技术介绍

[0002]事务是一组访问或修改数据项操作的有序集合,它保证了ACID的特性。事务并发控制算法的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性。主流的事务并发控制算法包括以下几类技术:
[0003]两阶段锁(Two

Phase Locking,2PL):通过在事务的执行过程中加锁来保证隔离性。在增长阶段,事务为读、写的数据项分别获取共享锁、独占锁。事务可能会因为所请求的数据项已被加锁而需要等待锁被释放;在收缩阶段,事务释放所持有的锁,并不允许获取新的锁。两阶段锁的方式在数据项有大量冲突场景下优势明显,它通过锁机制保证了事务的推进是有效的,然而在少量冲突场景下,加锁机制却没有优势。相反加锁所产生的开销(在分布式环境下网络通信开销)逐渐成为影响并发控制性能的瓶颈。
[0004]乐观并发控制(Optimistic Concurrency Control,OCC):在执行阶段会并发执行事务,多事务间不相互产生影响;在验证阶段则需要根据自事务开始以来提交的所有事务或当前处于验证阶段的所有事务来验证事务是否可序列化来确定执行结果。如果事务可以提交,则需要将该事务产生的修改持久化到存储,否则会回滚事务。相比于两阶段提交,在低冲突场景下,乐观并发控制节约了不必要的加锁的开销。但在高冲突场景下两阶段锁的并发控制方法能够让事务逐个提交,然而乐观并发控制会产生很多事务回滚,对事务执行的效率产生影响。
[0005]分区并发控制(Partition Concurrency Control,PartCC):将所有数据项划分为多个数据分区,每一个分区存在唯一的锁。事务中对任意数据项的修改需要首先获取数据项所在分区的锁,在事务结束时释放所持有的锁。这种并发控制方法适用于可分区的事务场景,即一个事务中所有修改的数据项,均存在于一个数据分区,这样事务的执行过程中只需要获取该分区的锁。然而当一个事务中所有修改的数据项分布在多个不同的分区时,由于需要获取多个分区的锁,分区并发控制的性能将会下降。
[0006]两阶段提交(Two

Phase Commit,2PC):将分布式事务分成了两个阶段,分别为准备(prepare)阶段和提交(commit)阶段。在准备阶段由协调者去询问所有的参与者,是否可以执行事务,只有当所有参与者都确定之后,才可以进入提交阶段真正让参与者执行事务。
[0007]通过上述几种并发控制方法不难看出,合适的并发控制方法是一种权衡。对于不同的负载场景,相同并发控制方法的吞吐量可能会有几倍的变化。因此没有一种并发控制方法是可以适用于所有负载场景,不合适的并发控制方法可能会导致性能显著下降。业务人员需要提前对要执行的工作负载中的事务冲突程度、类型、规模进行分析权衡后在进行选择。

技术实现思路

[0008]为解决上述技术问题,本专利技术提出了一种事务并发控制方法,应对实时多变的事务类型和不同的工作负载,根据实时收集到的数据项事务特征信息(即数据项事务特征信息),来调整数据的分区,并为每个分区选择合适的并发控制方法(对每个分区中数据的写操作采用对应并发控制方法),同时根据分区的负载信息,来移动或合并分区,以均衡节点之间的负载。
[0009]本专利技术采用的技术方案为:一种事务并发控制方法,具体步骤如下:
[0010]S1、构建一套事务系统;
[0011]S2、事务系统中每个事务索引实时收集分区的数据项的事务特征信息并动态调整事务的分区;
[0012]S3、基于步骤S2,为每个分区选择合适的并发控制方法,生成一个并发控制计划,交给分区管理器;
[0013]S4、分区管理器根据并发控制计划调整事务索引中的数据分区,并向客户端分发并发控制计划,根据并发控制计划中的分区范围,和每个分区的并发控制方法来进行读写操作,完成自适应的事务并发控制方法。
[0014]进一步地,所述步骤S1中,所述事务系统包括客户端SC、事务系统TS和存储系统SS,TS包括一个事务控制器TC和多个事务索引TI。
[0015]进一步地,所述步骤S1中,所述事务索引TI具体如下:
[0016]所述TI包括:TxIndex,DERegion,DEBucket。
[0017]每一个TI向外提供TxOpService服务,并由TxOpServiceImpl具体实现;TxOpServiceImpl中的TxIndex数据结构实现了TxOpService服务的方法。
[0018]TxIndex包括RegionPartitionTable和PartitionManager两部分。
[0019]其中,RegionPartitionTable是一个map<Range,DERegionPtr,RangeComparator>类型,即是一个从data

range到region的映射组成的数据分区集合。当TxIndex所实现的方法被调用,首先根据所调用的data

range,从RegionPartitionTable中找出其对应的DERegion,然后继续调用DERegion所实现的TxOpService的方法。
[0020]PartitionManager是一个独立于RegionPartitionTable的后台模块,通过不断调用PartitionService服务来获取到最新的属于该TxIndex数据分区信息,并对RegionPartitionTable中已有的分区进行调整。
[0021]DERegion表示一个data

range中所有data所组成的数据集合。
[0022]DERegion包含固定数量的DEBucket,DEBucket负责存储数据项数据,data

range中的每一个data会被固定的哈希到一个DEBucket中。
[0023]当DERegion所实现的TxOpService的方法被调用时,首先会根据所调用的data找到其所属的DEBucket,然后继续调用DEBucket所实现的TxOpService的方法。
[0024]DEBucket包括DEMVCC和一个mutex。
[0025]当DEBucket所实现的TxOpService的方法被调用时,会首先使用mutex加锁,保证在事务处理阶段的atomic

read

and

write语义。DEMVCC存储了多版本的数据项数据。
[0026]在DERegion中还有RegionPersist,RegionDependence,RegionMetric三个后台模块分别负责将此region中已提交的数据下沉到SS,依赖关系收集和上报,统计信息收集和...

【技术保护点】

【技术特征摘要】
1.一种事务并发控制方法,具体步骤如下:S1、构建一套事务系统;S2、事务系统中每个事务索引实时收集分区的数据项的事务特征信息并动态调整事务的分区;S3、基于步骤S2,为每个分区选择合适的并发控制方法,生成一个并发控制计划,交给分区管理器;S4、分区管理器根据并发控制计划调整事务索引中的数据分区,并向客户端分发并发控制计划,根据并发控制计划中的分区范围,和每个分区的并发控制方法来进行读写操作,完成自适应的事务并发控制方法。2.根据权利要求1所述的一种事务并发控制方法,其特征在于,所述步骤S1中,所述事务系统包括客户端SC、事务系统TS和存储系统SS,TS包括一个事务控制器TC和多个事务索引TI。3.根据权利要求1所述的一种事务并发控制方法,其特征在于,所述步骤S1中,所述事务索引TI具体如下:所述TI包括:TxIndex,DERegion,DEBucket;每一个TI向外提供TxOpService服务,并由TxOpServiceImpl具体实现;TxOpServiceImpl中的TxIndex数据结构实现了TxOpService服务的方法;TxIndex包括RegionPartitionTable和PartitionManager两部分;其中,RegionPartitionTable是一个map<Range,DERegionPtr,RangeComparator>类型,即是一个从data

range到region的映射组成的数据分区集合;当TxIndex所实现的方法被调用,首先根据所调用的data

range,从RegionPartitionTable中找出其对应的DERegion,然后继续调用DERegion所实现的TxOpService的方法;PartitionManager是一个独立于RegionPartitionTable的后台模块,通过不断调用PartitionService服务来获取到最新的属于该TxIndex数据分区信息,并对RegionPartitionTable中已有的分区进行调整;DERegion表示一个data

range中所有数据项所组成的数据集合;DERegion包含固定数量的DEBucket,DEBucket负责存储数据项数据,data

range中的每一个数据项会被固定的哈希到一个DEBucket中;当DERegion所实现的TxOpService的方法被调用时,首先会根据所调用的数据项找到其所属的DEBucket,然后继续调用DEBucket所实现的TxOpService的方法;DEBucket包括DEMVCC和一个mutex;当DEBucket所实现的TxOpService的方法被调用时,会首先使用mutex加锁,保证在事务处理阶段的atomic

read

and

write语义;DEMVCC存储了多版本的数据项数据;在DERegion中还有RegionPersist,RegionDependence,RegionMetric三个后台模块分别负责将此region中已提交的数据下沉到SS,依赖关系收集和上报,统计信息收集和上报,具体如下:RegionPersist会定期调用RegionService服务的GetMinATS方法;然后基于最新的min

ats,遍历该region的bucket,寻找可以下沉到SS中的已提交的数据;最终调用StorageService服务中的BatchStore方法将数据下沉到SS中,并清除DEBucket中已被下沉
的数据;RegionMetric会统计一段时间内,其所属region的读写统计信息;这些统计信息使用bvar结构,即bvar::LatencyRecorder数据类型,记录延时和tps信息,并在每次涉及到该region数据项的读写流程完成后更新;最终RegionMetric会定期的调用RegionService服务的RegionMetric方法上报给TC;这些记录在RegionMetric中的统计信息,反映了P(partition)中的的分区负载情况;DEMVCC结构体记录包括写冲突数量、事务操作数量的统计信息,即bvar::Window<Adder<int>>数据类型,记录在一段时间内的累加值,这些信息反映C(data)和L(data)的大小,并可以此计算出数据项的D(data);当数据项的D(data)大于λ时,将自己加入到RegionMetric中的热点数据项集合中;最终会在RegionService服务的RegionMetric方法中被上报给TC;TC根据每个region的统计信息,调整region中数据的分布,包括分裂或合并region,并最终由PartitionManager来完成分区中数据的调整。4.根据权利要求1所述的一种事务并发控制方法,其特征在于,所述步骤S1中,所述事务控制器TC具体如下:所述TC包括:DependenceManager、CCPlanner、PartitionManager和TxIDTable;TC提供TxService、RegionService和PartitionService三种服务,由各自的ServiceImpl实现;ServiceImpl中包括DependenceManager、CCPlanner和PartitionManager三个模块,分别负责依赖...

【专利技术属性】
技术研发人员:马迎春薛瑞尼王诏贤
申请(专利权)人:电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1