2023-03-14 mysql-innodb-事务实现-思考

事务是数据库的重要特性,特别是在TP系统中不可或缺。本文详细探讨了InnoDB事务的实现,包括原子性(依赖undo log)、持久性(利用redo log和buffer pool)、隔离性(通过锁和MVCC实现)以及一致性(依赖前三个特性并需要业务配合)。同时介绍了InnoDB中的各种锁类型以及MVCC在读写并行中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:

事务是数据库的一个很重要的点, 无论如何都绕不开, 尤其是对于TP系统来说没有事务是不可想象的。

本文对innodb的事务的实现进行一些反思

事务的特性:

  1. A 原子性
  2. C 一致性
  3. I 隔离性
  4. D 持久性

innodb的事务实现

原子性:

  1. 依赖于undo log
  2. undo log中不仅仅记录了如果回滚的操作, 还记录了该事务的行的数据
  3. undo log中的回滚段, 又保持着过去事务的链表, 可以追踪到过去的事务
  4. purge回收线程对undo log中已经没有被追踪的事务进行回收
  5. 行数据中有隐藏的列属性, 指向了undo log中的事务的地址
  6. 可以通过行数据和事务id, 找到特定事务的数据

持久性:

  1. 依赖于redo log, 事务执行过程中宕机则使用redo log进行事务回放
  2. 增加了buffer pool做为内存缓存
  3. 使用了Insert buffer, double write, 预读,自适应hash提升性能

隔离性:

  1. 隔离性是对于事务来说 
  2. 从数据层面来说, 事务可分为写事务和读事务
  3. 写写并行使用锁来解决
  4. 标准行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值