是什么

一致性非锁定读(consistent nonlocking read)是指InnoDB存储引擎通过行多版本控制(multi versioning)的方式来读取当前执行时间数据库中行的数据。如果当前读取的是一个在更新的操作或者删除的操作,不会等待锁的释放,会先读取InnoDB存储引擎中快照数据

非锁定读机制极大的提高了数据库的并发性。

在不同的事务隔离级别下 读取方式不同。并不是在每个事务隔离级别下都采用非锁定的一致性读
对于快照数据的定义也各不相同。
【数据库之美】深入浅出一致性非锁定读

Demo演示

【数据库之美】深入浅出一致性非锁定读
【数据库之美】深入浅出一致性非锁定读
【数据库之美】深入浅出一致性非锁定读
对于repeatable read 的事务隔离级别 总是读取事务开始时的行数据,因此对于readtable read事务隔离级别。
【数据库之美】深入浅出一致性非锁定读

对于read committed的事务隔离级别,他总是读取行的最新版本,如果行被锁定了,则读取改行版本的最新一个快照
【数据库之美】深入浅出一致性非锁定读

小结

一致性非锁定读,在不同的事务隔离界别下,读取的数据是不一样的。
在可重复读的隔离级别下,读取到的是旧的值,也就是说 第一次读取的是a 别人修改后 还是读取的a值
在读已提交的隔离级别下,读取的是最先的值。

我们来思考这样一个问题,为什么需要一致性非锁定读。其实不难想象,任何事物都遵循28原则,同样在一个应用层系统软件中,数据库读操作远大于写操作,也就是说,大部分情况下。请求的数据都是读操作。而这种机制下,我们就可以直接使用非锁定性一致读机制,提高系统的并发性。因此,凡事出现都有其原因,我们只有看到本质才能更好的理解这些技术的出现 解决了什么问题。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-07
  • 2021-10-14
  • 2021-11-15
  • 2021-12-09
  • 2021-11-01
猜你喜欢
  • 2022-12-23
  • 2021-11-29
  • 2021-12-27
  • 2021-05-08
  • 2022-03-06
  • 2021-11-07
  • 2022-01-24
相关资源
相似解决方案