MVCC 全称是 Multi-Version Concurrency Control,中文常翻译为「多版本并发控制」。它之所以叫“多版本”,核心原因可以一句话概括:
同一行数据在数据库中会同时存在多个版本,而不是只有最新的一份。
下面拆开说就很好理解了。
在不用 MVCC 的数据库里,更新一行数据通常是:
也就是说,数据只有“当前版本”。
以 MySQL InnoDB 为例:
DB_TRX_ID(创建/修改该版本的事务 ID)、DB_ROLL_PTR(回滚指针)于是同一行记录可能长这样:
这些版本在某一时刻同时存在。
因为有多份版本,数据库可以:
例如:
这就是“一致性读(快照读)”。
MVCC 叫多版本,是因为:
MVCC 的“多版本” = 一行数据有多个时间点的副本,事务按版本看数据。
如果你愿意,我也可以顺手用「小明改简历」这种生活例子再讲一遍。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。