数据库 · 单选题 · 第 39 题
计算机基础面试八股 · 第 39 题
InnoDB 在读已提交(RC)和可重复读(RR)下生成 Read View 的时机有什么区别?
- ARC 下每次快照读都新建 Read View;RR 下事务第一次快照读时生成,之后一直复用
- BRC 下事务第一次快照读时生成并复用;RR 下每次快照读都重新生成一个 Read View
- C两种级别都在事务的 BEGIN 语句执行时立即生成,之后整个事务期间不会变化
- D两种级别都不使用 Read View,而是在每次读取时对目标行加共享锁来保证可见性
答案
A A. RC 下每次快照读都新建 Read View;RR 下事务第一次快照读时生成,之后一直复用
解析
RC 每次读都拿最新的已提交快照,所以同一事务两次读可能不同,即不可重复读;RR 复用同一个 Read View,结果保持一致。BEGIN 时并不会立即生成 Read View,要等第一条快照读;START TRANSACTION WITH CONSISTENT SNAPSHOT 才会立刻生成。