MySQL 读已提交里的快照读和 MVCC 是什么关系

97次阅读
没有评论

有关系。你说的“读已提交也会读取快照”,背后就是 MVCC 在起作用。

什么是快照读

普通 select 一般属于快照读。它不急着去抢当前最新那一版数据,而是基于一致性视图读取自己在这个时刻应该看到的版本。

什么是当前读

select ... for updateupdatedelete 这类要修改或锁定数据的语句,读的是当前最新版本,因此会配合锁机制,而不是只靠快照。

读已提交里的“快照”有什么特点

特点是每次查询通常都会重新生成视图,所以你在同一个事务里执行两次普通查询,中间如果别人提交了新数据,第二次就可能看到新结果。

它和可重复读的区别在哪

可重复读更强调事务内视图稳定,第一次快照形成后,后续普通查询通常沿用同一套视图,因此结果更稳定,但实时性更弱。

一句话理解

MVCC 负责让普通读取少加锁,读已提交和可重复读的主要差别,不在有没有快照,而在快照什么时候重新生成。

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-03-25发表,共计375字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)