什么是 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。