跳转至

PostgreSQL 中的 MVCC

多版本并发控制(Multi-Version Concurrency Control, MVCC)是一种**通过冗余多份历史数据来达到并发读写目的**的一种技术。

在写入数据时,旧版本的历史数据将不会被删除,那么此时并发的读仍然能够读取到对应的历史数据,这样就使得读和写能够并发运行,并且不会出现数据不一致的问题。

在实现 MVCC 时,主要有两种方式:

1.在写入数据时将旧数据迁移到另一个地方,比如回滚段(undo log)。其他线程在读取改行数据时,从回滚段中将旧数据读出来,如 MySQL 和 Oracle。2.另一种方式直接将新数据插入到相关表页中,在同一个存储区域中保存数据的多个版本,PostgreSQL 便是使用该种方法实现的