InnoDB-一致性非锁定读(快照读)(后续再继续更新……)

InnoDB-一致性非锁定读(快照读)

 mysql官网文档:If the transaction isolation level is REPEATABLE READ (the default level), all consistent reads within the same transaction read 
 the snapshot established by the first such read in that transaction. You can get a fresher snapshot for your queries by committing the current 
 transaction and after that issuing new queries.
 翻译:如果事务隔离级别是 REPEATABLE READ (默认级别),同一个事务中的所有一致性读都会读取此事务中第一次一致性读所生成的快照。你可以通过提交当前事务然后进行一个新的查询来得到一个最新的查询快照。

前面事务的隔离级别中有说到next-key lock 和快照读,当时是不确定是next-key lock是保证不出现幻读的关键还是快照读是关键,他们的关系究竟是怎么样的,看完InnoDB的一致性读之后,就能揭晓答案了。

一致性读取是指:如果事务 隔离级别是 REPEATABLE READ(缺省级别),InnoDB使用多版本控制让查询到的数据都是数据库在某一个时间点的快照。查询到的结果是在该时间点之前所提交的事务做出的更改,而不会对以后或未提交的事务所做的更改进行更新。可以通过提交当前事务并在发出新查询之后为查询获取更新的快照。

如果使用READ COMMITTED隔离级别,事务中的每个一致读取都会设置并读取其自己的新快照。
一致性读取是InnoDB中 SELECT语句 READ COMMITTED和 REPEATABLE READ隔离级别的默认模式 。一致读取不会对其访问的表设置任何锁定,因此其他会话可以在对表执行一致读取的同时自由修改这些表。

为什么叫未锁定读?

因为在读取数据的时候,不需要等待访问的行上X锁的释放。而是直接读取快照。 如图。 在这里插入图片描述
那么,快照数据又是什么,存在哪的,怎么存的?
参考:《MySQL技术内幕》
《Mysql官网文档》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值