浅析MySQL - MVCC
版本链
在InnoDB引擎表中,他们的聚簇索引记录中有两个隐藏列:
- trx_id:用来存储对数据进行修改时的事务id
- roll_pointer:每次对哪条聚簇索引记录有修改的时候,就会把老版本写入undo日志中。这个roll_pointer就是存了一个指针,它指向这条聚簇索引记录的上一个版本的位置,通过它来获得上一个版本的记录信息。
例如目前有个trx_id是60的事务正执行如下语句: update table set name = '小明1' where id = 1
此时在 undo 日志中就存在版本链
版本链可以类似git一样,对一行的数据进行版本控制,可以通过 undo_log进行回滚操作
ReadView
已提交读和可重复读的区别就在于它们生成ReadView的策略不同。
ReadView中主要就是有个列表来存储我们系统中当前活跃的读写事务( begin未 commit 的 tx)。通过这个列表来判断记录的某个版本是否对当前事务可见。假设当前列表里的事务 id 为[80,100]。
id <= 80(最小事务id) id >= 80 && id <= 100 id >= 100
上一篇:mybatis-plus分页传入参数后sql where条件没有limit分页信息操作
栏 目:MySQL
本文标题:浅析MySQL - MVCC
本文地址:https://idc91.com/shujuku/4175.html
您可能感兴趣的文章
- 05-31MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
- 05-31MySQL索引失效十种场景与优化方案
- 05-31MYSQL 高级文本查询之regexp_like和REGEXP详解
- 05-31MySQL获取binlog的开始时间和结束时间(最新方法)
- 05-31MySQL索引查询的具体使用
- 05-31基于MySQL和Redis扣减库存的实践
- 05-31关于MySQL的存储过程与存储函数
- 05-31MySQL实战文章(非常全的基础入门类教程)
- 05-31MySQL Flink Watermark实现事件时间处理的关键技术
- 05-31MySQL Flink实时流处理的核心技术之窗口机制
阅读排行
推荐教程
- 05-30Navicat for MySQL 11注册码激活码汇总
- 05-27Mysql误删数据快速恢复
- 05-31VS2022连接数据库MySQL并进行基本的表的操作指南
- 05-30解决seata不能使用mysql8版本的问题方法
- 05-30MYSQL字符集设置的方法详解(终端的字符集)
- 05-30解决MySQL启动报错:ERROR 2003 (HY000): Can't con
- 05-30关于Mysql-connector-java驱动版本问题总结
- 11-22mac下安装mysql忘记密码的修改方法
- 05-30MySQL中的隐藏列的具体查看
- 11-22mysql exists与not exists实例详解