mysql当前读隔离_MySQL Transaction--快照读和当前读

本文介绍了MySQL中快照读与当前读的区别,快照读利用MVCC确保一致性而无需加锁,适用于读提交和可重复读级别;当前读通过加锁保证数据一致性,适用于SELECT...FOR UPDATE等操作,在可重复读级别下提供最新数据。
摘要由CSDN通过智能技术生成

在MySQL读取数据时可以按照是否使用一致性非锁定读来分为快照读和当前读:

1、快照读:MySQL使用MVCC (Multiversion Concurrency Control)机制来保证被读取到数据的一致性,读取数据时不需要对数据进行加锁,且快照读不会被其他事物阻塞。

2、当前读:也称锁定读(locking read),通过对读取到的数据(索引记录)加锁来保证数据一致性,当前读会对所有扫描到的索引记录进行加锁,无论该记录是否满足WHERE条件都会被加锁。

在读提交和可重复读两种事务隔离级别下,普通的SELECT操作使用“快照读”,不会对数据加锁,也不会被事务阻塞。

在读提交和可重复读两种事务隔离级别下,使用“当前读”的操作包括:

1、SELECT LOCK IN SHARE MODE

2、SELECT FOR UPDATE

3、DELETE\UPDATE\INSERT INTO\REPLACE INTO

在可重复读事务隔离级别下,“当前读”读取到的时数据库最新的数据,而“快照读”读取到的数据是事务中第一次建立ReadView时的数据+事务中修改的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值