Multi-Version Concurrency Control 多版本并发控制

多版本并发控制技术已经成为数据库的常见功能。

 

目前,多版本并发控制被很多数据库或存储引擎采用,如Oracle,MS SQL Server 2005+, PostgreSQL, Firebird, InnoDB, Falcon, PBXT, Maria等等。

 

新的数据库存储引擎,几乎毫无例外的使用多版本而不是单版本加锁的方法实现并发控制。

 

虽然都是多版本,但不同的数据库系统的实现却有很大不同。

 

可以将MVCC看成行级别锁的一种妥协,它在许多情况下避免了使用锁,同时可以提供更小的开销。

通过使用MVCC(Multi-Version Concurrency Control)算法自动提供并发控制。MVCC维持一个数据的多个版本使读写操作没有冲突。也就是说数据元素X上的每一个写操作产生X的一个新版本,数据库为X的每一个读操作选择一个版本。由于消除了数据库中数据元素读和写操作的冲突,数据库性能得到优化,具有更好的性能。特别是对于数据库读和写两种方法,他们不用等待其他同时进行的相同数据写和读的完成。在并发事务中,数据库写操作需要等待正在对同一行数据进行更新的写操作,这是现有的行级锁的弱点。同时MVCC回收不需要的和长时间不用的内存,防止内存空间的浪费。MVCC优化了数据库并发系统,使系统在有大量并发用户时得到最高的性能。

 

使用MVCC多版本并发控制比锁定模型的主要优点:
在MVCC里, 对检索(读)数据的锁要求与写数据的锁要求不冲突, 所以读不会阻塞写,而写也从不阻塞读。
在数据库里也有表和行级别的锁定机制, 用于给那些无法轻松接受 MVCC 行为的应用。 不过,恰当地使用 MVCC 总会提供比锁更好地性能。

 

你可能感兴趣的:(mvcc)