事务隔离的实现原理

前置知识

针对于事务隔离的具体原理需要了解一些概念和知识。

首先 MySQL 的每条记录都会有两个隐藏字段,row_trx_id(事务 id)和roll_pointer(回滚指针)。
row_trx_id 会记录当前记录被哪条事务所更改/创建,记录事务的 id。
roll_pointer 会记录上一版本的数据的地址。

进行数据更改时,会记录三个日志文件:
redo log 解决数据库宕机重启丢失数据的问题。
binlog 用于主从复制、数据备份操作。
undo log 实现事务回滚操作。

undo log 版本链:作用时回溯当前事务能够读取的数据。

undo log 会记录对数据操作的事务 id,修改后的数据和回滚指针
进行数据更新时,记录事务id,记录修改数,回滚指针指向上一版本。

ReadView 记录中四个重要属性:

  • creator_trx_id 当前事务id。
  • m_ids 当前系统中所有开启了但未提交事务的id。
  • min_trx_id 当前系统所有开启但未提交事务中 事务 id最小的。
  • max_trx_id 当前系统中事务 id 最大的值 +1,也就是系统下一个要生成的事务 id。

事务可见性:

当前事务为 A。

  1. 记录的事务 id 小于 min_trx_id 时,A 能看见(说明更新该数据的事务在 A 开启前就已经提交)。
  2. 记录的事务 id 大于等于 max_trx_id ,A 无法看见&#
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值