MVCC(Multi-Version Concurrency Control,多版本并发控制)是数据库实现并发控制的重要机制,“读提交(Read Committed,RC)” 是常见的事务隔离级别之一。下面我用原理 + 例子 + 常见数据库实现来说明:MVCC 在“读提交”中是怎么用的。
数据库不为读加锁,而是:
在 Read Committed 下:
✅ 每次执行 SELECT 时,都使用“最新的已提交快照”
也就是说:
id=1, value=100, 创建事务=10
BEGIN;
-- 第一次读
SELECT value FROM t WHERE id=1;
-- 看到 100
BEGIN;
UPDATE t SET value=200 WHERE id=1;
-- 未提交
SELECT value FROM t WHERE id=1;
-- 仍看到 100(B未提交)
COMMIT;
SELECT value FROM t WHERE id=1;
-- 看到 200(新提交版本可见)
✅ 这就是 MVCC + 读提交 的效果
对一次 SELECT:
在 RC 中:
xmin / xmax在读提交隔离级别下,MVCC 通过“每条 SQL 使用最新已提交快照”来实现非锁定读,保证只能看到已提交数据,但允许不可重复读。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。