MVCC处理并发事务与锁

MVCC(多版本并发控制)在InnoDB存储引擎的REPEATABLE_READ和READ COMMITTED隔离级别下工作,主要解决读写冲突。普通SELECT操作实现快照读,不加锁;而当前读如SELECT FOR UPDATE会加锁,防止数据被修改。MVCC通过版本链解决读已提交数据,而Next-Key Locking机制用于在REPEATABLE_READ级别下避免幻读。
摘要由CSDN通过智能技术生成

MVCC与锁

InnoDB存储引擎默认的事务隔离级别是REPEATABLE_READ, 在该隔离级别下,其采用Next-Key Locking的方式来加锁。

Innod存储引擎的普通SELECT操作使用一致性非锁定读,也即快照读。

当一个事务想对这条记录做改动时,首先会看看内存中有没有与这条记录关联的锁结构,当没有的时候就会在内存中生成一个锁结构与之关联。UPDATE,INSERT,DELETE等操作就会在内存中生成锁结构。

要理解MVCC,我们首先要明白MVCC解决的是什么问题?

既想保持事务的隔离性,又想让服务器在处理访问同一数据的多个事务时性能尽量高些,读和写都加锁的效率太低了,鱼和熊掌不可得兼,舍一部分隔离性而取性能者也。

所谓的MVCC(Multi-Version Concurrency Control ,多版本并发控制)指的就是在使用READ COMMITTDREPEATABLE READ这两种隔离级别的事务在执行普通的SEELCT操作时访问记录的版本链的过程,这样子可以使不同事务的读-写写-读操作并发执行,从而提升系统性能。READ COMMITTDREPEATABLE READ这两个隔离级别的一个很大不同就是:生成ReadView的时机不同,READ COMMITTD在每一次进行普通SELECT操作前都会生成一个ReadView,而REPEATABLE READ只在第一次进行普通SELECT操作前生成一个ReadView&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值