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

undo log 的内容管理

1. 逻辑结构与分区(如何组织)

InnoDB 对undo log的管理是层级化的,这种设计是为了支持高并发下的事务处理:

  • Undo Tablespace:存放 undo 日志的物理文件。
  • Rollback Segment (回滚段):每个表空间最多支持128个回滚段。
  • Undo Slot:每个回滚段包含1024个槽位,每个槽位对应一个Undo Log Segment
  • Undo Log Segment:真正存放日志内容的逻辑段,由多个Undo Page组成。

内容分区(类型分离):
在同一个 Undo Log Segment 中,日志被分为两类存储,因为它们的生命周期完全不同:

  1. Insert Undo Log:仅记录INSERT操作。
  2. Update Undo Log:记录UPDATEDELETE操作。

2. 不同分区的清理策略

日志类型包含操作清理触发点清理原因
Insert UndoINSERT事务提交后插入的数据在提交前只对当前事务可见,提交后没有“旧版本”需要维护,可立即回收。
Update UndoUPDATE,DELETEPurge 线程异步清理必须等待当前系统中所有可能访问该版本的ReadView(快照)都关闭后,才能由 Purge 线程回收空间。

3. 如何保证事务的原子性(Atomicity)

undo log是实现原子性的物理基础。当事务需要回滚(主动回滚或发生异常)时,MySQL 会利用它执行“逆向操作”:

  • 逻辑恢复:如果你INSERT了一条数据,Undo 会执行DELETE;如果你UPDATE了旧值,Undo 会执行反向UPDATE将其改回去。
  • WAL 机制的保护:为了防止宕机导致undo log丢失,undo log的物理修改也会被记录在redo log中。这保证了即使在回滚过程中崩溃,重启后也能通过redo log找回undo log并继续完成回滚。

4. 如何实现 MVCC(多版本并发控制)

undo log是版本链的“原材料来源”,它通过两个隐藏列管理数据版本:

  1. 版本链串联
    • 每行记录的DB_ROLL_PTR(回滚指针)指向该行在undo log中的上一个版本。
    • 通过这个指针,多代Update Undo Log形成了一个单向链表
  2. 快照读(Snapshot Read)
    • 当事务启动时会生成一个ReadView
    • 查询时,系统会顺着版本链对比DB_TRX_ID(事务ID),直到找到一个符合ReadView可见性规则的版本。

总结

  • 分区管理:按事务类型(Insert/Update)物理隔离,优化空间回收。
  • 原子性:提供逻辑上的“反向操作”指令。
  • MVCC:充当数据的“历史档案馆”,支撑非阻塞读。
http://www.jsqmd.com/news/688417/

相关文章:

  • 活动策划公司实操指南:大型会议活如何实现高效签到 - 麦麦唛
  • 淮安创帆制冷设备:苏州冷库板价格 - LYL仔仔
  • 求职精灵3.0版本使用教程
  • 2026熙琦科技迷你打印机批发靠谱正规拿货渠道干货分享 - 热敏感科技蜂
  • 从Fast RCNN到YOLOX:看目标检测‘头’部结构的十年‘减肥’与‘增肌’史
  • ESP32 LVGL 8.1样式背景避坑指南:bg_grad_stop设置不对,你的渐变为啥不显示?
  • 手把手教你用SuperMap iClient + Leaflet实现‘行政区域高亮’效果(从查询数据到渲染遮罩)
  • 武汉擎天仕劳务:湖北设备吊装公司 - LYL仔仔
  • OpenBoardView:免费的.brd文件查看终极方案,电子工程师必备工具
  • 没有采购经验可以考CPPM吗 - 众智商学院官方
  • Ultimate SD Upscale实战指南:AI图像高清放大的完整解决方案
  • 终极窗口调试指南:5个WinSpy++核心技巧彻底解决Windows开发难题
  • 从散热困境到自由掌控:TCC-G15如何让戴尔游戏本重获新生
  • 别再只用收盘价了!用Python实战Parkinson、Garman-Klass等3种高阶波动率算法(附完整代码避坑指南)
  • 告别命令行:在CentOS 7上通过直接编辑XML配置文件搞定firewalld端口转发
  • 2026年4月跨境物流货代企业选择指南:海运空运代理、欧美中东非东南亚专线及跨境中转物流公司推荐 - 海棠依旧大
  • 用ESP32的触摸引脚和RTC GPIO做个智能唤醒开关(附Arduino代码)
  • 如何在通达信中快速部署ChanlunX缠论可视化插件:完整免费教程
  • 5G NR网络优化实战:手把手教你配置CSI报告,提升下行速率(附RRC信令解析)
  • 抖音内容采集工作流优化:从手动复制到智能管理的转变
  • 南京乐意工程机械租赁:南京叉车出租服务 - LYL仔仔
  • OpenWRT Cron进阶玩法:除了定时重启,还能用定时任务实现这些智能场景
  • 告别模糊与噪声:手把手教你用Python+OpenCV提升数字全息显微图像质量(附代码)
  • 思科设备配置完重启就丢?一文搞懂Running-config与Startup-config的区别与保存
  • 在x86电脑上跑ARM系统:用QEMU/KVM搭建Debian ARM64虚拟机的保姆级教程
  • 数据结构与算法学习日志2
  • 别再重跑模拟了!手把手教你修复LAMMPS的dump轨迹,让它变成MDAnalysis能读的标准XYZ
  • 报表有哪几种模式?三种报表模式你知道吗?
  • 2026年4月丹阳钛架/镜架/镜框/眉毛架/品牌:聚焦轻奢品质与匠心工艺 - 2026年企业推荐榜
  • 【CVPR 2022算法精讲】SCI:自校准照明学习框架的实战解析与PyTorch实现