什么是MVCC?多元同步控制如何工作?

Java教程 2025-08-22

什么是MVCC? (多元相关控制)

多元转发并发控制(MVCC)是一种数据库优化技术。 MVCC创建记录的重复副本,以便可以同时安全地读取和更新数据。

使用MVCC,数据库读取和写入不会彼此阻止,这大大增强了用户体验。

MVCC有什么好处?

当由DBMS正确实施时,多元转化并发控制提供了以下好处:

  • 提高阅读访问性能;

  • 对数据库锁的需求减少;

  • 较少的数据库访问争议问题;

  • 继续记录写作操作的隔离;和

  • 数据库僵局数量减少。

传统的2PL更新需要锁。在此MVCC示例中,不需要DBMS锁。

MVCC数据库如何工作?

虽然DBMS供应商可以自由地以自己的方式实施MVCC,但多元化并发控制通常是这样的:

  1. 每个数据库记录都有一个版本号。

  2. 同时读取与最高版本号的记录发生。

  3. 写操作是根据记录的副本而不是记录本身进行操作。

  4. 在更新副本时,用户继续阅读旧版本。

  5. 写入操作成功后,版本ID会增加。

  6. 随后的并发读取使用更新版本。

  7. 当发生新的更新时,再次创建了一个新版本,继续周期。

MVCC与锁定有什么区别?

与传统的A DMB不同,当即将发生写操作时,多元聚光并发控制不会锁定记录。相反,创建了具有增量版本号的新版本的新版本。

在新记录进行过渡编辑和更新时,用户可以继续读取记录的旧版本。这消除了对锁的需求,以及争论和死锁问题。

当记录的新版本已投入到数据库中时,所有未来的读取操作都可以在更新的版本上使用。新的写入操作再次创建一个新版本,并且周期还在继续。

多元相关控制(MVCC)的缺点是什么?

尽管MVCC提供了许多好处,但多元相关控制有两个关键缺点:

  1. 并发更新控制方法难以实现。

  2. 数据库的大小增长,并被多个版本的DBMS记录肿。

对于用户甚至开发人员,实现MVCC并发控制方法所涉及的复杂性是完全隐藏的,因为该功能由数据库供应商提供。

开发人员可以编写SQL,最终用户可以像平常一样消费应用程序。 DBMS在幕后使用多元相关控制的事实对它们完全透明。

PostgreSQL MVCC多元相关控制

每个供应商都有自己的策略来最大程度地减少MVCC的主要缺点:数据库不断扩展的大小,鉴于创建的记录版本的潜在数量。

为了处理版本膨胀,PostgreSQL MVCC数据库使用巧妙命名的进程Vaccum来识别和删除由Multiversion并发控制过程创建的重复和不需要的记录。

名为Vaccum的PostgreSQL多元相关控制过程删除了DBMS的旧记录版本。

解决MVCC数据库空间超出问题

PostgreSQL MVCC Vaccum Process解决了版本的膨胀问题,但是当它运行并引起其自身锁定时,它可能是资源密集的,因为它检查了数据库中每个记录的状态。

尽管它可能会消耗额外的资源,但RDBMS管理员不应关闭PostgreSQL MVCC Vaccum Process。否则,该系统最终将生成MVCC数据库空间超过错误,并且管理员将需要将数据库离线解决。

快速学习Apache Maven!