MySQL MVCC 是什么?undo log 版本链怎么工作?
MVCC(Multi-Version Concurrency Control,多版本并发控制):读写不互斥——读操作读快照版本,写操作加锁,通过版本链实现无锁读。实现:每行有隐藏列 trx_id(最近修改事务 ID)、roll_pointer(指向 undo log 版本);undo log 保存旧版本形成版本链;快照(ReadView)由活跃事务列表生成,读时沿版本链找对当前事务可见的版本。Read View 规则:可见版本 trx_id < 创建 ReadView 时最小活跃 ID,或不在活跃列表且 < 最大 ID。RC 每语句建 ReadView,RR 每事务首次查询建一次(实现可重复读)。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。