InnoDB,快照读,在RR和RC下有何差异?(很多人,以为自己懂了...)
Posted 架构师之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了InnoDB,快照读,在RR和RC下有何差异?(很多人,以为自己懂了...)相关的知识,希望对你有一定的参考价值。
mysql数据库,InnoDB存储引擎,为了提高并发,使用MVCC机制,在并发事务时,通过读取数据行的历史数据版本,不加锁,来提高并发的一种不加锁一致性读(Consistent Nonlocking Read)。画外音:本文所有讨论基于MySQL-InnoDB。(2)它解决“读脏”问题,保证读取到的数据行都是已提交事务写入的;(3)它可能存在“读幻影行”问题,同一个事务里,连续相同的read可能读到不同的结果集;(2)它不但解决“读脏”问题,还部分解决了“读幻影行”问题,同一个事务里,连续相同的read读到相同的结果集;在读提交(RC),可重复读(RR)两个不同的事务的隔离级别下,快照读有什么不同呢?t(id PK, name);
表中有三条记录:
1, shenjian
2, zhangsan
3, lisi
case 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:假设事务的隔离级别是可重复读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;
提问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;
提问5:假设事务的隔离级别是可重复读RR,事务A中的A2查询,结果集是什么?
提问6:假设事务的隔离级别是读提交RC,A2的结果集又是什么呢?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:假设事务的隔离级别是读提交RC,A2的结果集又是什么呢?mysql 相关文章
《58到家MySQL军规升级版》
《数据库索引,到底是什么做的?》
《MyISAM与InnoDB的索引差异究竟是啥?》
《InnoDB,为何并发如此之高?》
《快照读,在RR和RC下的差异》
《InnoDB插入自增列,是表锁吗?》
《InnoDB并发插入,会不会互斥?》
《InnoDB,select为何会阻塞insert?》
《InnoDB如何巧妙实现,事务的4种隔离级别?》
《别废话,各种SQL到底加了什么锁?》
《超赞,InnoDB调试死锁的方法!》
《MySQL不为人知的主键与唯一索引》
《InnoDB的五项最佳实践,知其所以然》
《MySQL5.6,InnoDB的一些新特性》
《两类非常隐蔽的全表扫描,不能命中索引》
《数据库允许空值(null),往往是悲剧的开始》
《同一个SQL语句,为啥性能差异咋就这么大呢?》
《如何利用工具,迅猛定位低效SQL?》
《如何避免回表查询?什么是索引覆盖?》
《数据库,主键为何不宜太长?》
《频繁插入(insert)的业务,用什么存储引擎更合适?》
《MySQL表锁,总以为自己懂了》
《系统性聊聊数据库备份》
以上是关于InnoDB,快照读,在RR和RC下有何差异?(很多人,以为自己懂了...)的主要内容,如果未能解决你的问题,请参考以下文章
探究InnoDB可重复读
探究InnoDB可重复读
MySQL-InnoDB-MVCC多版本并发控制
MySQL-InnoDB-MVCC多版本并发控制
当前读和快照读
MySQL的RR和RC事务隔离级别加锁类型验证