Categories
程式開發

数据库内核杂谈(十二):事务、隔离、并发(3)


之前的文章,我们分别介绍了锁和时间戳机制来管理并发控制,这篇文章我们将介绍最被广泛使用的方法——多版本并发控制Multi-Version Concurrency Control (MVCC)。

为什么多版本并发控制更受欢迎呢?因为锁和时间戳机制都是通过阻塞或者回滚冲突的事务来确保事务的有序性。比如,一个读操作可能被迫回滚,因为它要读取的数据已经被另一个更新的事务修改了。但是,如果我们把每个数据的所有历史版本都记录下来,就可以避免上述这种情况发生。这也正是多版本控制的由来:对于每个数据Q,每次写操作write(Q)都会给Q建立一个新版本;而对于读操作read(Q),会根据事务的先后关系选择一个正确的版本去读取,来保证事务的有序性。多版本控制能够很好地解决这类读写冲突,尤其是长时间的读操作饿死写操作问题。

插一个能够提升格调的小知识,MVCC最早出现于1978年Dr. Reed的博士毕业论文“ Concurrency Control in Distributed Database Systems ”中( https://en.wikipedia.org/wiki/David_P._Reed),有兴趣的同学可以去看一下。

原文链接:【https://www.infoq.cn/article/gaOh3me9PmJBiQFD2j15】。未经作者许可,禁止转载。