1、 MVCC(Multiversion concurrency control),多版本并发控制,用来实现事务的隔离,使用MVCC本质上是为了在进行读操作的时候代替加锁,减少加锁带来的负担。
2、适用的事务级别:Read Committed和Repeatable Read
3、数据结构:
redo log:重做日志记录,存储事务操作的最新数据记录。
undo log:撤回日志记录,作为数据旧版本快照供其他并发事务进行快照读。
read_view:活跃事务链表(还未提交的事务,新建事务(当前事务)与正在内存中commit 的事务不在活跃事务链表)
对于Read Committed级别:每次执行select都会创建新的read_view,更新旧read_view,保证能读取到其他事务已经COMMIT的内容(此时也说明该级别不能防止出现不可重复读)
对于Repeatable Read级别:第一次select时更新这个read_view,以后不会再更新,后续所有的select都是复用这个read_view。 所以能保证每次读取的一致性,即都是读取第一次读取到的内容(此时可防止出现不可重复读)
4、实现:在每行记录多存储DB_TRX_ID(事务id)和DB_ROLL_PT(回滚指针)两列
mysql mvcc学习总结
最新推荐文章于 2024-04-01 00:55:40 发布