MySQL 面试官问:什么是当前读与快照读?

2022-12-22 10:22:24 浏览数 (2)

B站搜索“乐哥聊编程“有本篇文章配套视频‍ https://www.bilibili.com/video/BV1f24y117Dw

快照读

我们前面讲过MVCC机制实现了快照读,普通select 查询就是快照读,快照读到数据有可能不是最新的数据,它主要是为了实现可重复读的事务隔离级别。

当前读

读取的是最新的数据版本,当我们使用UPDATE、DELETE、INSERT、SELECT … LOCK IN SHARE MODE、SELECT … FOR UPDATE 是当前读。当前读就是加了锁的增删改查语句。

面试官问:关于MVCC 有没有解决幻读的问题?

这个问题可以这么回答:在快照读的情况下,InnoDB通过MVCC机制解决了幻读现象;但是在当前读的情况下,InnoDB是无法通过MVCC解决幻读的现象,因为它每次读取的都是最新的数据。

0 人点赞