MySQL中MVCC的readview是如何处理可见与不可见的?
在MySQL中,MVCC(多版本并发控制)是一种并发控制机制,它使用读视图(read view)来处理可见和不可见的数据。
读视图是一个事务在开始时创建的快照,用于确定在该事务开始之前哪些数据是可见的。当事务执行读操作时,它将使用其读视图来决定哪些数据版本是可见的。
读视图的创建和使用过程如下:
- 事务开始时,MySQL会为该事务创建一个唯一的事务ID。
- 事务在执行读操作之前,将当前系统版本号(system version number)保存到其读视图中。
- 当事务执行读操作时,MySQL会将其读视图与每个数据行的版本进行比较,以确定是否可见。如果数据行的版本早于事务的读视图,则该数据行对于该事务是不可见的。
- 当事务执行写操作时,它会为写入的每个数据行创建一个新版本,并将该版本的事务ID设置为当前事务ID。
- 在事务提交之后,MySQL会将该事务的事务ID设置为当前系统版本号,使得其他事务能够看到该事务的修改。
通过使用读视图,MVCC能够实现并发控制,使得每个事务只能看到在其开始之前提交的数据版本,从而避免了读操作的冲突和锁定。这样,不同事务之间可以并发地读取和修改数据库,提高了数据库的并发性能和吞吐量
原文地址: https://www.cveoy.top/t/topic/ir2B 著作权归作者所有。请勿转载和采集!