MVCC多版本

45,119 阅读1分钟

MVCC多版本并发控制核心概念以及底层原理

我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿

1.当前读与快照读的基本概念

在MVCC多版本并发控制中,核心概念和原理是非常复杂的,我们先来搞清楚MVCC中常见名称的基本概念,然后再来讲解什么是MVCC以及MVCC的原理。

1.1.当前读的基本概念

当前读指的是在事务中,通过Select查询语句读取的数据记录是当前表中最新版本的记录,默认情况下,在事务中读取表中的数据时,为了避免并发事务对我们读取的数据进行修改,会对读取的记录加锁,即使其他事务修改了表中的数据,我们读取到的数据仍然是其他事务修改之前的数据。

即使在事务中,我们也想要读取当前表中最新的数据记录,而并不是进入事务时查询到的数据,那么此时就需要用到当前读的概念,突破事务一开始读取数据的锁,通过当前读来读取表中最新版本的数据记录。

如何才能突破读取表记录加的锁呢?很简单只要触发当前读的机制,使当前的查询语句进化成当前读的行为,就可以读到表中最新版本的数据,当事务中执行的SQL,如select lock in share mode、update、insert、delete、select...for update这些,产生了共享锁和排它锁,此时就会产生当前读。