在 MySQL 中,Read View 和当前读是相互独立的。Read View 只是用于控制事务读取数据的版本,不涉及数据的修改操作。当前读则是用于读取最新的数据版本,并且涉及数据的修改操作。在进行读操作时,如果使用了 Read View,那么事务只能读取在创建该 Read View 之前创建的数据版本。
在 MySQL 中,Read View 和当前读是相互独立的。Read View 只是用于控制事务读取数据的版本,不涉及数据的修改操作。当前读则是用于读取最新的数据版本,并且涉及数据的修改操作。在进行读操作时,如果使用了 Read View,那么事务只能读取在创建该 Read View 之前创建的数据版本,不能读取其它事务正在修改的数据。如果使用了当前读,那么事务可以读取最新的数据版本,并且可以进行数据的修改操作。
当前读是指事务读取数据时,读取的是最新的数据版本。在当前读中,如果一个事务读取了一条数据后,另一个事务对这条数据进行修改,那么第一个事务再次读取这条数据时,会读取到修改后的数据版本。当前读有两种方式:共享锁和排他锁。
在共享锁的情况下,多个事务都可以同时读取同一份数据,但是不能同时进行修改操作。如果一个事务对数据进行修改,那么其它事务就需要等待它提交或者回滚,然后才能继续进行修改操作。在排他锁的情况下,只有一个事务可以对数据进行修改,其它事务需要等待它提交或者回滚后才能继续进行修改操作。
延伸阅读:
Read View 的实现原理
Read View 是通过创建一个快照来实现的,每个事务都有自己的 Read View。快照是一个时间点的数据库状态,包含了当前所有表的版本号。当一个事务开始时,它会创建一个 Read View,这个快照包含了当前所有表的版本号。事务在读取数据时,只能读取在这个快照之前创建的数据版本。如果数据被其它事务修改了,那么这个事务就需要等待这个事务提交或者回滚,然后重新创建一个新的 Read View。
文章标题:mysql readview和当前读是怎么处理的,发布者:Flawy,转载请注明出处:https://worktile.com/kb/p/53648