news 2026/6/10 19:28:56

可重复读(Repeatable Read)隔离级别下幻读产生的原因

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
可重复读(Repeatable Read)隔离级别下幻读产生的原因

幻读(Phantom Read)是指在一个事务中,两次相同的范围查询返回了不同数量的行,主要由于其他事务插入新行导致。

产生幻读的核心原因:

1.快照读 vs 当前读的混合使用
-- 可重复读下,普通SELECT是快照读,基于MVCC版本链 SELECT * FROM users WHERE age > 20; -- 快照读,使用事务开始时的快照 -- 但某些操作会触发当前读 UPDATE users SET status = 1 WHERE age > 20; -- 当前读,看到最新提交的数据 SELECT * FROM users WHERE age > 20 FOR UPDATE; -- 当前读,加锁
2.MVCC的局限性
  • MVCC保证已存在的行读取一致性

  • 但无法阻止其他事务插入新的行

  • 事务开始时创建ReadView,只记录当时已存在的行版本

3.锁机制的缺失

在标准SQL规范中,可重复读级别:

  • 只对已存在的行加锁(行锁)

  • 不对不存在的行(间隙)加锁

  • 因此其他事务可以插入满足条件的新行

实际示例:

-- 事务A START TRANSACTION; -- 第一次查询:返回id为1,2,3的3条记录 SELECT * FROM users WHERE id BETWEEN 1 AND 5; -- 此时事务B插入id=4的新记录并提交 INSERT INTO users(id, name) VALUES (4, 'new_user'); COMMIT; -- 事务A再次查询(可重复读应返回相同3条记录) SELECT * FROM users WHERE id BETWEEN 1 AND 5; -- 仍然只看到id 1,2,3 -- 但事务A执行更新操作时 UPDATE users SET status = 1 WHERE id BETWEEN 1 AND 5; -- 更新会作用到id=4的行(因为更新是当前读) -- 然后事务A再次查询,就会看到4条记录 ← 这就是幻读

MySQL InnoDB的特殊处理

MySQL通过Next-Key Locking机制在可重复读级别避免了幻读:

SELECT * FROM users WHERE age > 20 FOR UPDATE; -- InnoDB会锁住age>20的整个范围(间隙锁+行锁) -- 其他事务无法插入age>20的新行

总结表格:

隔离级别脏读不可重复读幻读
读未提交
读已提交
可重复读可能发生
串行化

关键点

  • 幻读专指新插入的行

  • 可重复读能防止已存在行的修改,但不能防止新行的插入

  • 实际应用中可通过SELECT ... FOR UPDATE加间隙锁来避免

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 9:24:20

大数据领域日志数据的存储优化与性能调优

大数据领域日志数据的存储优化与性能调优关键词:大数据、日志数据、存储优化、性能调优、数据处理摘要:本文围绕大数据领域中日志数据的存储优化与性能调优展开。首先介绍了相关背景知识,包括目的、预期读者等。接着详细解释了日志数据存储和…

作者头像 李华
网站建设 2026/6/10 9:24:02

【毕业设计】机器学习基于cnn卷积网络识别树叶是否存在病变

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/9 17:53:36

交互式世界建模新方案!腾讯混元发布世界模型WorldPlay,兼顾实时生成与长期几何一致性;5万条样本!Med-Banana-50K支持增删病灶双向编辑

世界模型正驱动计算智能领域的重心逐渐从语言任务拓展至视觉与空间推理,通过构建动态三维环境的模拟能力,这些模型使智能体得以感知并与复杂场景交互,从而为具身智能、游戏开发等领域开启了新的研究与应用前景。世界模型的前沿正聚焦于实时交…

作者头像 李华
网站建设 2026/6/10 9:22:53

深度学习毕设选题推荐:人工智能基于python的鲜花识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 9:21:36

【论文阅读】Steering Your Diffusion Policy with Latent Space Reinforcement Learning

【论文阅读】Steering Your Diffusion Policy with Latent Space Reinforcement Learning1 团队与发表时间2. 问题背景与核心思路3. 具体做法3.1 模型设计3.2 Loss 设计3.3 数据设计4 实验效果5 结论6 扩散模型进行RL的方案6.1 纯离线设置 (Purely Offline Setting)6.2 在线设置…

作者头像 李华
网站建设 2026/6/10 9:53:12

深度测评专科生必用的8款AI论文软件

深度测评专科生必用的8款AI论文软件 2026年专科生论文写作工具测评:如何选择适合自己的AI助手 随着AI技术的不断进步,越来越多的专科生开始借助AI工具提升论文写作效率。然而,面对市场上琳琅满目的论文辅助软件,如何挑选真正适合自…

作者头像 李华