MySQL中MVCC的流程

2023-12-21 19:18:06

参考文章一
参考文章二

当谈到数据库的并发控制时,多版本并发控制(MVCC)是一个重要的概念。MVCC 是一种用于实现数据库事务隔离性的技术,常见于像 PostgreSQL 和 Oracle 这样的数据库系统中。

MVCC 的核心思想是为每个数据行维护多个版本,这样在事务并发执行时,每个事务可以看到一个特定时间点的数据快照,而不会受到其他事务的影响。这种机制使得读取操作和写入操作可以并发执行,同时保持数据的一致性和隔离性。

在 MVCC 中,每个数据行都会有多个版本,每个版本都有一个时间戳或者序列号来标识。当一个事务开始时,它会获得一个时间戳,并且在整个事务期间都使用这个时间戳来读取数据。这意味着事务只能看到在它开始之前已经提交的数据版本,而对于在它开始之后才提交的数据修改,事务是看不到的。

MVCC 的实现方式会有所不同,但通常包括以下步骤:

  1. 当一个事务开始时,系统会为该事务分配一个唯一的时间戳或序列号。
  2. 在执行写操作时,系统会为被修改的数据行创建一个新的版本,并使用事务的时间戳来标识这个版本。(之后同一事务再写,通过标识来修改同一版本)
  3. 在执行读操作时,系统会根据事务的时间戳来选择合适的数据版本,确保事务只能看到在它开始之前已经提交的数据版本。(如果某个数据行有多个版本,事务会选择不晚于其开始时间的最新版本,确保事务只读取在它开始之前已经存在的数据,而不会读到在该事务开始之后才发生修改的数据。)

通过这种方式,MVCC 实现了事务之间的隔离,使得事务可以并发执行而不会相互干扰,同时保持了一定程度的数据一致性。

总的来说,MVCC 是一种高效的并发控制机制,通过为数据行维护多个版本来实现事务的隔离性,从而在数据库系统中广泛应用于提高并发性能和确保数据一致性。

1

在这里插入图片描述

2

在这里插入图片描述

3

在这里插入图片描述

4

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_41638851/article/details/135135528
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。