mysql mvcc

阿里云服务器

MVCC(Multi-Version Concurrency Control)是 MySQL 中实现事务隔离级别的一种机制。

在 MVCC 中,每个事务在开始时都会获取一个唯一的事务 ID(称为“版本号”),该事务 ID 将与所有该事务所进行的数据库修改操作相关联。当其他事务尝试读取相同的行时,它们将看到与它们自己的事务 ID 相关联的行版本。这样,每个事务都能够独立地读取和修改数据库,而不会相互干扰。

在 MVCC 中,每个数据行都可能有多个版本。例如,当一个事务修改某行时,它不会覆盖该行的原始版本,而是将其标记为“已删除”,并创建一个新版本,该版本包含修改后的值和新的事务 ID。其他事务在读取该行时,将看到未被标记为“已删除”的最新版本。

在 MySQL 中,实现 MVCC 的主要技术是 undo 日志和读视图。Undo 日志是用于回滚操作的事务日志,它记录了每个事务对数据库所做的更改。读视图是用于读取操作的数据结构,它记录了每个事务在特定时间点可以看到哪些行的版本。

总之,MVCC 是 MySQL 中实现并发控制的重要机制,它允许多个事务同时对同一行进行读取和修改操作,而不会相互干扰。