-
MVCC(Multiversion Concurrency Control),即多版本并发控制,MYSQL在可重复读(REPEATABLE READ)的隔离级别下,通过MVCC解决幻读问题及其他问题。
-
MVCC可以被认为是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低,虽然实现机制不同,但大都实现非阻塞的读操作,写操作也只锁定必要的行。
-
MVCC通过再每行记录保存两个隐藏列来实现,这两个列保存了一个创建版本号,一个保存了删除版本号,也可以看做创建时间和删除时间,每开始一个事务,版本号会自动递增。
下面是简单示例解释:
用户ID | 用户名 | 创建版本号 |
删除版本号 |
---|---|---|---|
1 | Roy | 992 |
|
2 | Kelly | 993 |
1001 |
3 | Caren | 992 |
|
4 | Jones | 997 |
999 |
5 | Jack | 999 |
当前开始一个事务