Mysql底层原理九:Undo log

3.6 Undo log

Undo log主要为了保证原子性,事务中的操作要么全部完成,要么什么都不做

  1. Undo log没有用 undo log buffer,Undo log是写到系统表空间的 undo段里面去的,就是说其实利用的是mysql的数据页来存放,多条undo形成单向链表,如果单个数据页放不下就放到其他数据页,undo log数据页之间通过双向链表连接
  1. undo长什么样?
    1. insert undo
复制代码
  - undo type
  - undo no
  - old roll pointer 指向前一个 undo log,形成版本链
  - trx_id  事务id
  - 主键列值,因为是insert嘛,所以undo的时候只需要根据主键id删除就行
  1. delete undo
复制代码
     - undo type
     - undo no
     - old roll pointer指向前一个 insert undo log
     - trx_id
     - 各行的数据
  1. 物理存储:undo log存放到系统表空间->undo log段-> undo log数据页, undo log像行记录一样,通过单向链表连接起来,然后叶子节点数据页的行记录用指针指向undo log
  1. 逻辑存储:第一条是行记录,然后后面都是undo log版本链
相关推荐
xUxIAOrUIII10 小时前
【数据库原理】期末复习(初稿)
数据库·笔记
Pocker_Spades_A10 小时前
AI Ping 上线 GLM-4.7 与 MiniMax M2.1:两款国产旗舰模型免费用!
大数据·数据库·人工智能
峰顶听歌的鲸鱼10 小时前
20.MySql数据库
运维·数据库·笔记·mysql·云计算·学习方法
G_H_S_3_10 小时前
【网络运维】SQL 语言:MySQL数据库基础与管理
运维·网络·数据库·mysql
东东的脑洞10 小时前
【面试突击】PostgreSQL vs MySQL 索引架构深度对比:聚簇索引 vs 堆表
mysql·postgresql·面试
光于前裕于后10 小时前
在AWS Redshift 中使用联邦查询 MySQL
mysql·aws·redshift
半壶清水10 小时前
ubuntu中使用使用Docker-Compose管理MySQL、Apache、PHP容器
mysql·ubuntu·docker·php·apache
IvanCodes10 小时前
openGauss 高级特性:优化器、存储引擎与分区管理
数据库·sql·opengauss
DemonAvenger10 小时前
Redis主从复制原理与实战:构建高可用缓存架构
数据库·redis·性能优化
X.Ming 同学11 小时前
QXlsx 库在麒麟 Linux(Qt 5.15.2)下完整安装步骤(含问题排查 & 经验总结)
linux·数据库·qt