立即订阅

mysql怎么读(mysql的当前读和快照读)

欧易app下载

OKEX欧易app下载

欧易交易所app是全球排名第一的虚拟货币交易所。

APP下载   官网注册
2024年03月24日 11:03 来源于:烟月稀财经笔记 浏览量:
当前读和快照读的概念先解释一下:当前读类似于隔离级别里的读已提交(RC)的逻辑,就是读取的是最新的数据,快照读就是读的是快照生成时候的数据。

当前读和快照读的概念先解释一下:当前读类似于隔离级别里的读已提交(RC)的逻辑,就是读取的是最新的数据,快照读就是读的是快照生成时候的数据。

快照是通过UNDO LOG + MVCC实现的,这个如果解释逻辑的话可以说很多,这里就不详细的阐述了,现在区分场景什么时候是当前读,什么时候是快照读:

1.当前读(Locking Reads):

select...lock in share mode 这个基本上用不到

select...for update (record lock and table lock) 这个是使用悲观锁的时候时候的,用的也不多

update , delete , insert 这个是用的非常多的,类似于update set version = version + 1 where id = 1 这样每执行一次,version都会+1,就是因为这个地方是当前读了。

参考:https://dev.mysql.com/doc/refman/8.0/en/innodb-consistent-read.html

2. 快照读(Consistent Nonlocking Reads)

select .. from table 默认执行一个简单的select就是快照读

for RC : every select 在RC的隔离级别下,每一个select都是快照读

for RR : first select in transaction 在RR的隔离级别下,是在启动事务的第一次select的时候,才会这个快照的开始点

参考:https://dev.mysql.com/doc/refman/8.0/en/innodb-consistent-read.html

还是找mysql的官方文档说的比较清晰

关键词:
友情链接