您的当前位置:首页 >数据库 >InnoDB,快照读,在RR和RC下有何差异?(很多人,以为自己懂了...) 正文
时间:2025-11-03 20:25:23 来源:网络整理编辑:数据库
什么是快照读(Snapshot Read)?MySQL数据库,InnoDB存储引擎,为了提高并发,使用MVCC机制,在并发事务时,通过读取数据行的历史数据版本,不加锁,来提高并发的一种不
什么是快照快照读(Snapshot Read)?MySQL数据库,InnoDB存储引擎,读R懂为了提高并发,和何差使用MVCC机制,异多在并发事务时,自己通过读取数据行的快照历史数据版本,不加锁,读R懂来提高并发的和何差一种不加锁一致性读(Consistent Nonlocking Read)。
画外音:本文所有讨论基于MySQL-InnoDB。异多
快照读的自己内核原理,详见:《InnoDB并发如此高,快照原因竟然在这?读R懂》
什么是读提交(Read Committed)?
(1)数据库领域,事务隔离级别的和何差一种,简称RC;
(2)它解决“读脏”问题,异多保证读取到的自己数据行都是已提交事务写入的;
(3)它可能存在“读幻影行”问题,同一个事务里,连续相同的read可能读到不同的结果集;
什么是可重复读(Repeated Read)?(1)数据库领域,事务隔离级别的一种,简称RR;
(2)它不但解决“读脏”问题,还部分解决了“读幻影行”问题,同一个事务里,b2b信息网连续相同的read读到相同的结果集;
在读提交(RC),可重复读(RR)两个不同的事务的隔离级别下,快照读有什么不同呢?我们一起来做一些实验。
假设有InnoDB表:
复制t(id PK, name);1.表中有三条记录:
shenjianzhangsanlisicase 1,两个并发事务A,B执行的时间序列如下(A先于B开始,B先于A结束):
复制A1: start transaction;
B1: start transaction;
A2: select * from t;
B2: insert into t values (4, wangwu);
A3: select * from t;
B3: commit;
A4: select * from t;1.2.3.4.5.6.7.提问1:假设事务的隔离级别是可重复读RR,事务A中的三次查询,A2, A3, A4分别读到什么结果集?
提问2:假设事务的隔离级别是读提交RC,A2, A3, A4又分别读到什么结果集呢?
case 2,仍然是上面的两个事务,只是A和B开始时间稍有不同(B先于A开始,B先于A结束):
复制 B1: start transaction;
A1: start transaction;
A2: select * from t;
B2: insert into t values (4, wangwu);
A3: select * from t;
B3: commit;
A4: select * from t;1.2.3.4.5.6.7.8.9.提问3:假设事务的隔离级别是可重复读RR,事务A中的三次查询,A2, A3, A4分别读到什么结果集?
提问4:假设事务的隔离级别是读提交RC,服务器租用A2, A3, A4的结果集又是什么呢?
case 3,仍然是并发的事务A与B(A先于B开始,B先于A结束):
复制A1: start transaction;
B1: start transaction;
B2: insert into t values (4, wangwu);
B3: commit;
A2: select * from t;1.2.3.4.5.提问5:假设事务的隔离级别是可重复读RR,事务A中的A2查询,结果集是什么?
提问6:假设事务的隔离级别是读提交RC,A2的结果集又是什么呢?
case 4,事务开始的时间再换一下(B先于A开始,B先于A结束):
复制case 4,事务开始的时间再换一下(B先于A开始,B先于A结束):
B1: start transaction;
A1: start transaction;
B2: insert into t values (4, wangwu);
B3: commit;
A2: select * from t;1.2.3.4.5.6.7.8.9.提问7:假设事务的隔离级别是可重复读RR,事务A中的A2查询,结果集是什么?
提问8:假设事务的隔离级别是读提交RC,A2的b2b供应网结果集又是什么呢?
很多时候,我们以为自己懂了,其实...
拯救者BIOS降级教程(降级BIOS,让拯救者重获新生)2025-11-03 20:06
不容忽视的四大网络攻击趋势2025-11-03 20:02
企业的数据备份策略或缺乏备份策略都可能会吸引网络攻击者2025-11-03 19:58
索引失效底层原理分析,这么多年终于有人讲清楚了2025-11-03 19:46
将MOV格式视频转换为MP4的简单方法(以MOV格式的视频为例,教你一步步将视频转换为MP4格式)2025-11-03 19:20
企业如何获得利益相关者对增强网络安全意识的支持2025-11-03 18:39
Redis数据库学习提高工作效率2025-11-03 18:31
关于Redis缓存,这三个问题一定要知道!2025-11-03 18:29
如何选择正确的电脑显示接口(避免因接口选择错误而带来的问题和困扰)2025-11-03 18:22
西班牙 19 岁天才黑客被拘捕!2025-11-03 18:03
电脑官方插件的使用教程(轻松掌握官方插件的安装和使用方法)2025-11-03 19:13
金融科技行业的“出海”之路:基于API整个生命周期构建安全防线,筑实数字化创新基石2025-11-03 19:06
MySQL 8 中检查约束的使用2025-11-03 19:01
C#连接数据库和更新数据库2025-11-03 18:27
手机连接电脑删除的文件如何找回?(通过专业软件恢复被删除的手机文件)2025-11-03 18:10
如何编写一份高质量的渗透测试报告?2025-11-03 18:02
黑客攻击 Packagist PHP 包,“劫持”数亿软件包2025-11-03 17:58
你知道 Redis 使用的什么协议吗?2025-11-03 17:58
网购配件组装电脑教程(快速学习如何通过网购配件自行组装个人电脑,省钱又省心)2025-11-03 17:44
如此火的Redis,它都解决了什么问题?2025-11-03 17:42