快照读与当前读

89 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

当前读,

即读取最新的提交数据

如果select 查询语句后面跟了 for update子句,那么就是当前读

insert 、update、delete,都会按最新提交的数据进行操作

快照读,

读取某一个快照建立时(可以理解为某一时间点)的数据

快照读主要体现在select时,不同隔离级别下,select 的行为不同

在串行隔离级别(Serializable)隔离级别下-普通select也变成当前读, 在RC(读提交)隔离级别下,每次select都会建立新的快照 在RR(可重复读)隔离级别下 1、事务启动后,首次select 会建立快照

在这里插入图片描述 在这里插入图片描述 2、如果事务启动选择了 with consistent snapshot,事务启动时,就会建立快照 在这里插入图片描述

3、基于旧数据的修改(就是快照里的数据被修改),会重新建立快照 在这里插入图片描述

RC与RR的快照读,主要区别就是快照建立的时机。

在这里插入图片描述