什么是 Read Vi和当前读_它不会改变数据本身_排他锁只有一个小伙伴可以修改数据其他人都得等着

什么是 Read View 和当前读?

Read View 和当前读在 MySQL 中是两回事,它们各自有各自的作用。

Read View 的简单解释

Read View 就像是一个数据的快照,它控制着事务可以读取哪些版本的数据。但是,它不会改变数据本身,只是用来读取。

当前读的简单解释

当前读则是读取最新的数据版本,并且还可以修改数据。如果你读了一条数据,然后有人改了它,你下次再读的时候就能看到修改后的版本。

对比 Read View 和当前读

读操作时,如果你用 Read View,就只能看到创建 Read View 之前的旧数据,看不到其他人正在修改的新数据。

如果你用当前读,你就能看到最新的数据版本,还能进行修改。

特点 Read View 当前读
读取数据版本 旧版本 最新版本
是否修改数据 不修改 可以修改

当前读的两种方式

当前读主要有两种方式:共享锁和排他锁。

延伸阅读:Read View 的原理

Read View 是通过创建一个快照实现的。每个事务都有自己的 Read View,就像是一个时间胶囊,记录了那个时刻的数据库状态。事务开始时,它会创建一个 Read View,然后就只能读取到那个时间点之前的数据版本。

如果数据被修改了,这个事务就需要等待修改的事务提交或回滚,然后重新创建一个新的 Read View。