哪些隔离级别用到了readview?

1 个回答

  • 龙傲天
    我一路种下蘑菇,只为让你知道回家的路。
    **只有 InnoDB 的 `READ COMMITTED` 和 `REPEATABLE READ` 会用到 Read View(MVCC 的一致性读快照)。** * **READ COMMITTED(RC)**:**每条语句**做一致性读时**都会新建**一个 Read View,所以同一事务里两次相同查询可能读到更新后的数据。 * **REPEATABLE READ(RR)**:事务内**第一次一致性读**创建 Read View,**整个事务复用**这份快照,所以可重复读。 **不使用 Read View 的情况** * **READ UNCOMMITTED**:直接读未提交版本,没有一致性快照。 * **SERIALIZABLE**:普通 `SELECT` 会被提升为**加锁读**(类似 `LOCK IN SHARE MODE` 的效果),走**锁**而不是 MVCC 快照。 * 任何隔离级别下的**当前读**(`SELECT ... FOR UPDATE/LOCK IN SHARE MODE`、`UPDATE/DELETE`)都不走 Read View,而是读**最新版本并加锁**。
    编辑于 2025-08-15 16:01 •IP属地 北京
    举报
    评论
    收藏