论文部分内容阅读
在分布式存储系统中,一个事务请求经常需要访问存储在多个服务器上的数据。当有许多并发的互相冲突的事务时,为了保证系统的正确性和满足一定的语义要求,需要运行分布式并发控制协议。传统的分布式事务并发控制协议通常基于两阶段锁或者乐观并发控制。当有许多并发且冲突的事务的时候,系统的性能都有比较大的消耗。本文针对高效的分布式事务的并发控制,主要贡献如下:1.对于单发型事务,提出了去中心化的基于冲突依赖关系跟踪和传播的并发控制协议Dep Tran,Dep Tran把事务划分成若干片段,每个片段可以在服务器上原子性的执行。在事务的运行时,服务器延迟片段的执行,跟踪片段之间的冲突依赖关系,然后每个服务器对片段进行确定性的重排,使得最后的执行顺序满足序列化可能性。相比于传统方法,在中度冲突程度下,Dep Tran有3.2~6.7倍的性能提升。2.对于通用型事务,本文提出了基于离线分析、冲突重排、只读事务优化的并发控制方法Rococo,Rococo使用离线分析确定对冲突事务片段重排的可能性,并且对于不能重排的工作集,Rococo使用传统的方法对导致不能重排的片段进行合并,并且使用只读协议处理只读事务,以尽可能的提高系统的性能。在TPC-C测试集的测试中,对比传统的协议,Rococo在处理一般冲突情况下的并发事务时,有1.2~5.3倍的性能提升。3.对于本文提出的并发控制协议,进行了理论分析。通过分析,本文把相对复杂的分布式事务并发控制协议,分解成若干相互支撑的不变式。这些不变式不仅可以循序渐进的证明系统的正确性,而且可以帮助系统开发者更好的理解协议的设计,为系统的正确实现提供了蓝本。除此之外,本文还使用规范化的数学描述语言TLA+对系统进行了描述,并用模型验证的方法对一种可能的优化进行了机器检查。4.对于近年来兴起的在分布式数据库中使用单工作线程的设计思想,本文指出了其在面对复杂的并发控制方法时可能会产生“栈撕裂”的问题。针对该问题,本文提出了一个用户态的轻量级线程框架Tran Fiber,允许数据库开发者进行协同式的任务管理。在保留单工作线程的好处的同时,可以对栈进行自动管理。Tran Fiber可以极大的简化分布式并发控制的实现。