>

MVCC (Multi-Version Concurrency Control) 多版本并发控制在分布式系统中是一个很重要的技术手段。
在传统的分布式并发读写一个共享数据时,如果要保证读写的一致性,需要加锁来控制单一时间只有一个访问者在读写数据,然而当遇到一个长时间的读操作时,这时候写入操作将不得不进行长时间的等待。
这种模式下,数据库的读写性能非常的低效。在 MVCC 中,通过对原数据进行多个拷贝,用版本号来标记读或写的先后顺序,从而有效地提升整个系统的性能。

具体场景如下:
每当想要更改或者删除某个数据对象时,DBMS 不会在原地去删除或这修改这个已有的数据对象本身,而是创建一个该数据对象的新的版本,这样的话同时并发的读取操作仍旧可以读取老版本的数据,而写操作就可以同时进行。这个模式的好处在于,可以让读取操作不再阻塞,事实上根本就不需要锁。这种特性非常的高效,以至于在很多主流的数据库中都采用了 MVCC 的实现,比如说 PostgreSQL,Oracle,Microsoft SQL Server 等。