mysql mvcc学习总结

本文深入解析了MVCC(多版本并发控制)的概念及其在不同事务级别下的应用方式,包括Read Committed和Repeatable Read。通过介绍MVCC的数据结构如重做日志(redolog)、撤回日志(undolog)及读视图(read_view)等,揭示了其如何在不使用锁的情况下实现事务间的隔离。

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

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(回滚指针)两列 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值