InnoDB MVCC 实现原理详解:如何实现并发访问和事务隔离
InnoDB 通过使用多版本并发控制 (MVCC) 实现并发访问和事务隔离。下面是 InnoDB 实现 MVCC 的方式:
-
存储行的版本:InnoDB 使用多个版本的行来实现 MVCC。每当对行进行更新或删除操作时,InnoDB 会创建一个新的版本,并将旧版本标记为过期。这样,其他事务仍然可以访问过期的版本,而不会受到正在进行的事务的干扰。
-
事务 ID:每个事务都会被分配一个唯一的事务 ID (transaction ID)。事务 ID 的分配是按照顺序进行的,较早开始的事务会有较小的事务 ID。这样,可以通过事务 ID 来判断哪个版本的行对于当前事务是可见的。
-
Read View:每个事务在开始时会创建一个 Read View。Read View 包含了事务开始时其他事务已经提交的版本列表。通过比较 Read View 和行版本的事务 ID,可以确定哪个版本对于当前事务是可见的。
-
快照读 (Snapshot Read):当一个事务执行快照读时,它会使用 Read View 来确定可见的行版本。快照读不会阻塞正在进行的写操作,因为它只读取已提交的行版本。
-
当前读 (Current Read):当一个事务执行当前读时,它会读取最新的行版本。如果正在进行的事务已经修改了该行,则当前读将会阻塞,直到修改完成。
通过这些方式,InnoDB 实现了多版本并发控制,提供了高并发度和事务隔离级别。
原文地址: https://www.cveoy.top/t/topic/sqB 著作权归作者所有。请勿转载和采集!