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版本链
相关推荐
小羽网安1 小时前
从零开始学习 sql 注入,常见的 sql 注入解析
数据库·sql·学习
2401_846339562 小时前
CSS如何优化大型项目样式_使用SASS预处理器提升开发效率
jvm·数据库·python
ss2738 小时前
食谱推荐系统功能测试如何写?
java·数据库·spring boot·功能测试
l1t9 小时前
DeepSeek总结的数据库外部表
数据库
m0_674294649 小时前
如何编写SQL存储过程性能对比_记录执行时间评估优化效果
jvm·数据库·python
014-code9 小时前
CompletableFuture 实战模板(超时、组合、异常链处理)
java·数据库
运气好好的9 小时前
怎样开启phpMyAdmin的操作审计日志_记录每条执行的SQL
jvm·数据库·python
それども10 小时前
DELETE 和 TRUNCATE TABLE区别
java·数据库·mysql
wenha10 小时前
数据库隔离级别
数据库·mysql·sqlserver·隔离级别
2401_8714928510 小时前
Layui如何修改Layui默认的UI主题颜色(换肤功能实现)
jvm·数据库·python