MVCC是什么

简介: MVCC是多版本并发控制,为每次事务生成一个新版本数据,每个事务都有自己的版本,从而不加锁就拒绝读写冲突,这种读叫做快照读。只在读已提交和可重复读中生效。实现原理由四个东西保证,他们是:undolog日志:记录了数据历史版本readView:事务进行快照读时产生的视图,记录了当前系统中活跃的事务id,控制哪个历史版本对当前事务可见隐藏字段DB_TRC_ID: 最近修改记录的事务ID隐藏字段DB_Roll_PTR: 回滚指针,配合undolog指向数据的上一个版本

MVCC是多版本并发控制,为每次事务生成一个新版本数据,每个事务都有自己的版本,从而不加锁就拒绝读写冲突,这种读叫做快照读。只在读已提交和可重复读中生效。

实现原理由四个东西保证,他们是:

undolog日志:记录了数据历史版本

readView:事务进行快照读时产生的视图,记录了当前系统中活跃的事务id,控制哪个历史版本对当前事务可见

隐藏字段DB_TRC_ID: 最近修改记录的事务ID

隐藏字段DB_Roll_PTR: 回滚指针,配合undolog指向数据的上一个版本

相关文章
|
3月前
MVCC 与其他并发控制机制的区别
【10月更文挑战第15天】总之,MVCC 与其他并发控制机制各有特点和适用场景。在实际应用中,需要根据具体的业务需求和系统特点选择合适的并发控制机制,以实现最佳的性能和数据一致性。
|
3月前
|
存储 数据库 数据安全/隐私保护
MVCC实现原理
【10月更文挑战第15天】MVCC 通过维护版本链和相关信息,实现了在多事务并发环境下的数据隔离和并发控制,提高了数据库的性能和可用性。
|
5月前
|
存储 Java 数据库
|
4月前
|
关系型数据库 MySQL 数据库
InnoDB 的 MVCC 实现原理
InnoDB 的 MVCC 实现原理
53 0
|
5月前
|
关系型数据库 MySQL 数据库
为什么需要MVCC 隔离级别
【8月更文挑战第5天】
56 7
|
7月前
|
关系型数据库 MySQL 数据库
InnoDB-MVCC多版本控制详解
InnoDB-MVCC多版本控制详解
|
8月前
|
存储 缓存 关系型数据库
RR有幻读问题吗?MVCC能否解决幻读?
RR有幻读问题吗?MVCC能否解决幻读?
70 0
RR有幻读问题吗?MVCC能否解决幻读?
|
存储 算法 Oracle
PostgreSQL的MVCC vs InnoDB的MVCC
PostgreSQL的MVCC vs InnoDB的MVCC
104 0
PostgreSQL的MVCC vs InnoDB的MVCC
|
存储 关系型数据库 Java
MVCC你了解多少?
MVCC(Multi-Version Concurrency Control)是一种并发控制机制,用于解决数据库中并发访问数据时可能出现的读-写冲突问题。MVCC通过为每个事务分配一个唯一的事务ID,并为每个数据项维护多个版本,使得读操作可以同时进行,从而提高并发性能。 MVCC的核心思想是通过版本号或时间戳来区分不同的事务和数据版本。当一个事务开始时,它会被分配一个唯一的事务ID,并在执行读操作时,只能看到在该事务开始之前已经提交的数据版本。这样,即使其他事务正在修改数据,当前事务也不会受到影响,从而避免了读-写冲突。
153 0
|
关系型数据库 MySQL 数据库
简单聊聊MVCC
本文章仅仅是从一个点来讲MVCC,比较粗浅,并不能代表这就是全部的MVCC。网上还有许多其他详细的MVCC介绍文章,可以结合起来阅读。
简单聊聊MVCC