MySQL MVCC多版本并发控制实现原理

MVCC(多版本并发控制)在MySQL中通过为每条记录添加row_id, db_trx_id, db_prev_ptr三列,实现事务的隔离。在SELECT操作时创建read_view快照,确保在事务内多次查询结果一致,防止不可重复读和脏读。然而,当存在CUD操作时,新的read_view可能导致幻读,即两次SELECT可能返回不同结果。

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

MVCC

MySQL记录自动增加3列,row_id,db_trx_id,db_prev_ptr

select语句执行时,生成一个read_view快照读,以此快照为基准,在事务整个过程中,不会发生变化。所以两次select的结果保持一致,解决不可重复读问题和脏读问题。

对于幻读问题,在无CUD的纯select语句下,可以避免幻读,但如果有CUD,就会生成一个新的readview快照,对事务的变化会进行更新,可能会导致两次select的结果出现不一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值