老外做的中国汉字网站free wordpress template
2026/4/17 22:02:01 网站建设 项目流程
老外做的中国汉字网站,free wordpress template,短期设计培训班,东莞建设通网站《数据库架构100讲》10. InnoDB快照读先简单解释下快照读#xff0c;读提交#xff0c;可重复读。快照读(Snapshot Read)MySQL数据库#xff0c;InnoDB存储引擎#xff0c;为了提高并发#xff0c;使用MVCC机制#xff0c;在并发事务时#xff0c;通过读取数据行的历史数…《数据库架构100讲》10. InnoDB快照读先简单解释下快照读读提交可重复读。快照读(Snapshot Read)MySQL数据库InnoDB存储引擎为了提高并发使用MVCC机制在并发事务时通过读取数据行的历史数据版本不加锁来提高并发的一种不加锁一致性读(Consistent Nonlocking Read)。读提交(Read Committed)1. 数据库领域事务隔离级别的一种简称RC2. 它解决“读脏”问题保证读取到的数据行都是已提交事务写入的3. 它可能存在“读幻影行”问题同一个事务里连续相同的read可能读到不同的结果集可重复读(Repeated Read)1. 数据库领域事务隔离级别的一种简称RR2. 它不但解决“读脏”问题还解决了“读幻影行”问题同一个事务里连续相同的read读到相同的结果集在读提交(RC)可重复读(RR)两个不同的事务的隔离级别下快照读有什么不同呢先说结论1. 事务总能够读取到自己写入(update /insert /delete)的行记录2. RC下快照读总是能读到最新的行数据快照当然必须是已提交事务写入的3. RR下某个事务首次read记录的时间为T未来不会读取到T时间之后已提交事务写入的记录以保证连续相同的read读到相同的结果集画外音可以看到(1)和并发事务的开始时间没关系和事务首次read的时间有关(2)由于不加锁和互斥关系也不大举例说明InnoDB表t(id PK, name);表中有三条记录1, shenjian2, zhangsan3, lisicase 1两个并发事务AB执行的时间序列如下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假设事务的隔离级别是可重复读RR事务A中的三次查询A2, A3, A4分别读到什么结果集回答RR下(1)A2读到的结果集肯定是{1, 2, 3}这是事务A的第一个read假设为时间T(2)A3读到的结果集也是{1, 2, 3}因为B还没有提交(3)A4读到的结果集还是{1, 2, 3}因为事务B是在时间T之后提交的A4得读到和A2一样的记录提问2假设事务的隔离级别是读提交RCA2, A3, A4又分别读到什么结果集呢回答RC下(1)A2读到的结果集是{1, 2, 3}(2)A3读到的结果集也是{1, 2, 3}因为B还没有提交(3)A4读到的结果集还是{1, 2, 3, 4}因为事务B已经提交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;提问3假设事务的隔离级别是可重复读RR事务A中的三次查询A2, A3, A4分别读到什么结果集提问4假设事务的隔离级别是读提交RCA2, A3, A4的结果集又是什么呢回答事务的开始时间不一样不会影响“快照读”的结果所以结果集和case 1一样。case 3仍然是并发的事务A与BA先于B开始B先于A结束A1: start transaction;B1: start transaction;B2: insert into t values (4, wangwu);B3: commit;A2: select * from t;提问5假设事务的隔离级别是可重复读RR事务A中的A2查询结果集是什么提问6假设事务的隔离级别是读提交RCA2的结果集又是什么呢回答在RR下A2是事务A的第一个read假设为时间T它能读取到T之前提交事务写入的数据行故结果集为{1, 2, 3, 4}。在RC下没有疑问一定是{1, 2, 3, 4}。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;提问7假设事务的隔离级别是可重复读RR事务A中的A2查询结果集是什么提问8假设事务的隔离级别是读提交RCA2的结果集又是什么呢回答事务的开始时间不一样不会影响“快照读”的结果所以结果集和case 3一样。啰嗦说了这么多最后总结1. RR下事务在第一个Read操作时会建立Read View2. RC下事务在每次Read操作时都会建立Read View知其然知其所以然。思路比结论更重要。全文完有架构合集吗《流量从10万到10亿80个架构问题》《关于即时通讯架构的一切》Q4内测了一个新产品看普通人起号能否复制《复盘来了4周人均41W》内测成绩不错4周的时间人群你全网流量41W本周日二期直播开营点击阅读原文一起参与

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询