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

Read View 在 MVCC 里如何工作的?

把数据库想象成一间“时间照相馆”。  
每当你开启一个事务,前台就给你拍一张“快照门票”(Read View),上面写了三行关键信息:

1. 此刻正在活跃(还没提交)的所有事务 ID 列表  
(仍在暗房里洗照片的客人名单)  
2. 下一个将分配的事务 ID(下一位客人的号码)  
3. 你自己的事务 ID(你的号码)

拿着这张门票,你可以随便翻阅整本相册(数据所有历史版本),但只看**符合规则的旧照片**——这就是 MVCC 的魔法。

------------------------------------------------
一条顺口溜:  
“号码比我小,且不在黑名单,才给我看;否则往前翻更早的照片。”

------------------------------------------------
直观三步:

1. 每行数据自带两个隐藏列:  
`created_by` = 拍这张照片的事务号  
`deleted_by` = 撕掉这张照片的事务号(没撕就是空)

2. 你拿着门票比对:  
• 如果 `created_by` ≥ 我的「下一位号码」→ 这张照片是未来人拍的,跳过。  
• 如果 `created_by` 在我的活跃名单里 → 拍照的人还没结账,跳过。  
• 如果 `deleted_by` 存在且 ≤ 我的事务号 → 这张照片已被我或更早的人撕掉,跳过。  

   只有通过全部过滤的那一张,才是你在当前快照里能看到的版本。

3. 不同隔离级别换门票:  
• Read Committed:每次查询都重新拍一张门票(读取最新已提交)。  
• Repeatable Read:整个事务只用最开始的门票(保证可重复读)。

------------------------------------------------
一页图就记住:

```
门票(Read View)
┌────────┬────────────┐
│ 我的ID │   100      │
│ 活跃ID │ 97 98 99   │
│ 下一ID │   101      │
└────────┴────────────┘

数据行各版本
┌─数据值─┬created_by┬deleted_by┐
│  Alice │    96    │   —      │ ← 给你看(96 < 100 且不在活跃)
│  Bob   │    98    │   —      │ ← 不给你看(98 在活跃)
│  Carol │    95    │   99     │ ← 不给你看(被 99 撕了)
└────────┴──────────┴──────────┘
```

就这么简单:Read View 就是一张“时间过滤门票”,MVCC 靠它让你看到过去某一瞬间的一致世界。

http://www.dtcms.com/a/337743.html

相关文章:

  • DSP音频算法工程师技能2
  • IDE开发系列(2)扩展的IDE框架设计
  • GNhao/GN号,海外SIM号怎么注册详细步骤!
  • 纯前端表格控件SpreadJS v18.0 Update1正式发布——集成AI智能化插件
  • 大数据计算引擎(一)——Spark
  • gdb的load命令和传给opeocd的monitor flash write_image erase命令的区别
  • 如何实现前后端交互以及方法传参中传字段和传对象的区别和方法。
  • 音乐怎么测试?正在播放音乐,中途拔掉u盘,再次插上u盘,是怎么播放的?
  • 低端设备加载webp ANR
  • JavaScript 常用事件总结汇总
  • 前端css学习笔记7:各种居中布局空白问题
  • Ethan独立开发新品速递 | 2025-08-18
  • 开发避坑指南(28):Spring Boot端点检查禁用失效解决方案
  • 【Linux操作系统】简学深悟启示录:进程状态优先级
  • 遨游三防科普|三防平板是指哪三防?应用在什么场景?
  • linux对外提供snmp服务
  • Pytest项目_day18(读取ini文件)
  • Spring Boot 实用小技巧:多级缓存(Caffeine + Redis)- 第545篇
  • 如何解决机器翻译的“幻觉“问题(Hallucination)?
  • 当AI学会“思考”:大语言模型背后的智能本质与伦理边界
  • 【提示词技巧】通用提示词原则介绍
  • Linux学习-软件编程(进程间通信1)
  • ROS 2 中用于建图的一些 topic
  • PyTorch神经网络工具箱(优化器)
  • buuctf:护网杯_2018_gettingstart、oneshot_tjctf_2016
  • llamafactory使用qlora训练
  • VectorDB+FastGPT一站式构建:智能知识库与企业级对话系统实战
  • 使用LLaMA-Factory对大模型进行微调-详解
  • OSG+Qt —— 笔记2- Qt窗口绘制棋盘及模型周期运动(附源码)
  • linux:告别SSH断线烦恼,Screen命令核心使用指南