【技术实现步骤摘要】
一种事务并发控制方法
[0001]本专利技术属于分布式数据库
,具体涉及一种事务并发控制方法。
技术介绍
[0002]事务是一组访问或修改数据项操作的有序集合,它保证了ACID的特性。事务并发控制算法的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性。主流的事务并发控制算法包括以下几类技术:
[0003]两阶段锁(Two
‑
Phase Locking,2PL):通过在事务的执行过程中加锁来保证隔离性。在增长阶段,事务为读、写的数据项分别获取共享锁、独占锁。事务可能会因为所请求的数据项已被加锁而需要等待锁被释放;在收缩阶段,事务释放所持有的锁,并不允许获取新的锁。两阶段锁的方式在数据项有大量冲突场景下优势明显,它通过锁机制保证了事务的推进是有效的,然而在少量冲突场景下,加锁机制却没有优势。相反加锁所产生的开销(在分布式环境下网络通信开销)逐渐成为影响并发控制性能的瓶颈。
[0004]乐观并发控制(Optimistic Concurrency Control,OCC):在执行阶段会并发执行事务,多事务间不相互产生影响;在验证阶段则需要根据自事务开始以来提交的所有事务或当前处于验证阶段的所有事务来验证事务是否可序列化来确定执行结果。如果事务可以提交,则需要将该事务产生的修改持久化到存储,否则会回滚事务。相比于两阶段提交,在低冲突场景下,乐观并发控制节约了不必要的加锁的开销。但在高冲突场景下两阶段锁的并发控制方法能够让事务逐个提交,然而乐观并发控制会产生很多事务回滚,对
【技术保护点】
【技术特征摘要】
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三个模块,分别负责依赖...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。