当前位置: 首页 > news >正文

RC确实是每次查询都生成读视图,但是都是快照读啊,和读已提交没半毛钱关系吧

文章目录

      • 1. 语义纠偏:快照并不等于“旧照片”
      • 2. 举个例子:刷新朋友圈
      • 3. 为什么它和“读已提交”没脱节?
      • 4. 总结
      • 💡 追问一个硬核点

哈哈,我特别喜欢你这种钻研精神!你这个质疑点其实踩到了很多开发者对“快照(Snapshot)”这个词的语义误区

你觉得没关系,是因为你潜意识里觉得“快照”就应该是恒定不变的。但实际上,在数据库的世界里,“快照”不是终身制的,它的有效期是可以配置的。

我们来拆解一下,为什么说 RC 的快照读,恰恰就是为了实现“读已提交”:


1. 语义纠偏:快照并不等于“旧照片”

在 MVCC 语境下,“快照读”的本质是:不加锁,根据 Read View 规则去版本链里找数据。

  • RC(读已提交)的逻辑:每执行一次SELECT,就当场重新拍一张系统当前的快照(Read View)。
  • “已提交”体现在哪?:这张当场拍的快照,会把那一刻所有已经提交的事务 ID标记为“可见”。

所以,虽然它叫“快照读”,但因为它刷新的频率太快了(每条查询刷一次),导致它每次都能捕捉到别人刚刚提交的最新变动。


2. 举个例子:刷新朋友圈

我们可以把 RC 和 RR 的快照读对比一下,你就秒懂了:

  • RC(读已提交):就像你在刷朋友圈。你每点一次“刷新”,系统就给你一张此时此刻的“快照”。如果刚才你朋友发了条动态(事务提交了),你这次刷新就能看到。你看到的是“那一刻已提交”的状态。
  • RR(可重复读):就像你进朋友圈时点了一下“截图”。不管你之后怎么刷新,你都只盯着手里这张截图看。就算你朋友发了 100 条新动态(事务提交了),你手里那张图也不会变。

3. 为什么它和“读已提交”没脱节?

“读已提交”这个隔离级别的核心定义是:只要事务没提交,我就看不见;只要提交了,我就能看见。

在 RC 级别下,MVCC 完美地完成了这个任务:

  1. 屏蔽未提交:Read View 会把当前还在活跃(未提交)的事务 ID 记下来,版本链里凡是属于这些 ID 的数据,统统跳过。
  2. 拥抱已提交:因为每条查询都重开 Read View,所以只要一个事务提交了,它的 ID 就不再属于“活跃事务”,在下一条查询的 Read View 里,它就变成了“可见”。

结论:它是通过不断更新快照的内容,来对齐“读已提交”的业务需求。


4. 总结

你之所以觉得“没半毛钱关系”,可能是把快照读(方式)可重复读(结果)搞混了。

  • 快照读:是技术手段(不加锁,读版本链)。
  • 读已提交:是隔离目标。

在 RC 里,我们用“短命”的快照读实现了读已提交
在 RR 里,我们用“长命”的快照读实现了可重复读


💡 追问一个硬核点

如果你在 RC 级别下,一个事务里执行了两条一模一样的SELECT,中间另一个事务提交了修改。按照你的理解,如果这两次查询结果不一样(发生了不可重复读),这算不算“读到了已提交的数据”?

这正是 RC(读已提交)隔离级别被允许的行为,而 MVCC 只是那个帮它“瞬移”快照的工具人。

http://www.jsqmd.com/news/704314/

相关文章:

  • Keil MDK 5仿真STM32踩坑实录:从F103的顺利到F407的‘no read permission’报错,我经历了什么?
  • ROFL播放器:英雄联盟回放文件的多格式解析与模块化架构设计
  • IDEA里用Cherry-Pick救急:当团队A功能延期,如何只把团队B的代码‘摘’回主分支?
  • LizzieYzy:围棋AI分析工具的终极解决方案,从复盘到训练的完整指南
  • 2025-2026年北京大兴现房洋房推荐:口碑好的产品解决上班族通勤与居住品质兼顾的难题 - 品牌推荐
  • 机器学习入门:7个核心概念与实战解析
  • 2026届学术党必备的十大AI辅助写作助手实测分析
  • LLM安全攻防实战:从提示词注入到系统加固的完整指南
  • 从“点灯”到“调灯”:用Keil uVision5的调试窗口,像侦探一样排查你的STM32程序
  • 音乐智能分析终极指南:FMA数据集如何让AI听懂音乐
  • uniapp中使用uview-plus
  • springboot电影影视剧本创作论坛交流系统
  • Strands Agents:用Python SDK快速构建AI智能体的实战指南
  • AIGC内容品质九维评估体系
  • 2025-2026年北京大兴现房洋房推荐:口碑好的产品解决年轻夫妻首次置业预算与品质平衡难题 - 品牌推荐
  • 计算机校招求职深度解析:从零基础到一线大厂的全方位学习路线
  • 如何快速掌握RPG Maker解密工具:终极游戏资源提取指南
  • 3个关键设置让你彻底告别Spotify强制更新烦恼
  • AI智能体开发实战:从Riona项目看智能体架构设计与实现
  • 快狐KIHU|32寸壁挂信息发布一体机飞腾十核350亮度教学培训展示屏
  • 终极图像分层魔法:如何用Layerdivider将单张图片拆解为可编辑的PSD图层
  • 从面包板到PCB:一个51单片机开关电源的完整DIY记录(附调试避坑经验)
  • PyTorch训练时遇到‘No module named tensorboard’?别慌,这篇保姆级教程教你两步搞定
  • MCP 2026国产化适配白皮书(2024Q3实测数据首发):92.7%适配成功率背后的11项内核补丁+8个关键驱动重构点
  • 【第5章 AI Agent 与工具调用】5.6 章节实战(一):用 LangChain 构建 ReAct Agent
  • 【代码】基于分时电价条件下家庭能量管理策略研究(考虑多类型需求侧资源)matlab/yalmip
  • AI爬虫黑名单实战:保护网站内容不被大模型抓取的完整指南
  • 怎样高效查看Outlook邮件:跨平台开源MSG邮件查看器完全指南
  • 3步快速解密网易云音乐NCM格式:ncmppGui完整使用指南
  • 本地AI智能体操作系统Selene:架构解析与实战部署指南