0
点赞
收藏
分享

微信扫一扫

MySQL的MVCC多版本控制原理

上一篇 <<<MySQL的并发文件及事务隔离级别
下一篇 >>>MySQL常用命令汇总


MVCC(Multi-Version Concurrency Control)即多版本并发控制。就是同一份数据临时保留多版本的一种方式,进而实现并发控制
传统锁的方式保证实现多版本控制,需要通过锁的方式实现,效率非常低。
MVCC 使用了一种不同的手段, 无锁并发控制每个连接到数据库的读者,在某个瞬间看到的是数据库的一个快照,写操作造成的变化在写操作完成之前(或者数据库事务提交之前)对于其他的读者来说是不可见的。

Innodb中的隐藏列

列名 长度(字节) 作用
DB_ROW_ID 6 用于聚簇索引隐式产生的索引行(隐藏单调自增id)
DB_TRX_ID 6 插入或更新行的最后一个事务的事务标识符,每处理一个事务,值+1。(删除视为更新,将其标记为已删除)
DB_ROLL_PTR 7 指向当前记录项的rollback segment的undo log记录,找之前版本的数据就是通过这个指针
DELETE_BIT 标识该记录是否被删除,这里的不是真正的删除数据,而是标志出来的删除。真正意义的删除是在commit的时候

各种语句的执行过程

1.insert

id name DB_TRX_ID DELETE_BIT
1 test 1

2.update

id name DB_TRX_ID DELETE_BIT
1 test 2 1
1 test2 2

3.delete

id name DB_TRX_ID DELETE_BIT
1 test2 3 1

4.select


推荐阅读:
<<<MySQL发展历程与整体架构
<<<MySql连接空闲8小时自动断开的原因及连接池配置方法
<<<查询和更新sql语句执行原理
<<<MySQL存储引擎汇总
<<<InnoDB存储引擎的Buffer Pool 缓冲池底层结构
<<<Too many connections分析与processlist解读
<<<MySQL索引底层结构与实现原理
<<<MySql的表锁行锁及间隙锁
<<<MySQL的并发文件及事务隔离级别
<<<MySQL常用命令汇总

举报

相关推荐

0 条评论