前言
并发控制理论在分布式计算领域是一块较为重要的内容。了解和掌握好这块理论知识,将有助于我们在工作实践中解决一些复杂的难题。最近笔者学习了分布式数据库系统原理书中的分布式并发控制的相关内容,本文借此机会总结总结。
并发控制的目标
在往常,我们一提到并发这个词,就会马上联想到多线程这个词。这是因为我们在平时的开发工作中经常有遇到多线程的场景。但是回过头来看这个词,其实并发的场景绝不仅限于多线程操作,另外一个典型的应用场景就是数据库里的事务更新。现在一个核心的问题来了,并发控制的目的是为了什么?它有什么作用?我们为什么要引入这样的控制机制呢?这些问题归纳起来就是一个答案:在大规模并行操作下,保证数据的正确更新。也就是说如果我们不加以进行控制,是可能发生数据更新异常的情况,比如说操作乱序、操作丢失等等的情况。
并发控制机制的分类
OK,那么并发控制机制中到底有哪些机制呢?在我们平常熟悉的多线程编程模型里,我们提到最多的控制技巧就是两种:1.悲观方式,即锁控制机制,从比较粗粒度的锁(synchronized)到细粒度的锁(ReadLock、WriteLock)。2.乐观方式,即加时间戳方式。加时间戳的方式是为了保证操作的有序性。
但是在并发控制理论体系内,对于并发控制机制进行了更为细致的分类,主要为以下的一些分类:
首先它同样有分为悲观算法和乐观算法。
悲观算法:悲观算法包括基于加锁,基于排序以及混合前2