mysql官网解读之InnoDB Transaction Model
文章目录MVCC14.7.2.1事务隔离级别参考的官方文档MVCC在mysql中会有多版本控制,在rr事务级别,同一秒读到的数据是一样的,即使其他事务进行相关操作也不会影响,除非西西~在rc级别是可以读取到已经修改的数据的。使用READ COMMITTED隔离级别,事务中的每个一致读取都会设置并读取其自己的新快照。使用时LOCK IN SHARE MODE,将发生锁定读取:A SELE...
MVCC
在mysql中会有多版本控制,在rr事务级别,同一秒读到的数据是一样的,即使其他事务进行相关操作也不会影响,除非西西~
在rc级别是可以读取到已经修改的数据的。
使用READ COMMITTED隔离级别,事务中的每个一致读取都会设置并读取其自己的新快照。使用时LOCK IN SHARE MODE,将发生锁定读取:A SELECT阻塞直到包含最新行的事务结束(请参见 第14.7.2.4节“锁定读取”)。
14.7.2.1事务隔离级别
InnoDB报价由SQL描述的所有四个事务隔离级别:1992标准: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ,和 SERIALIZABLE。默认隔离级别InnoDB是 REPEATABLE READ。
rr级别
- 上面我们可以看到,rr级别mvcc机制下,同一个事务多次读取的数据都是一样的。
- 在update,delete的时候,如果没有命中唯一索引,会去锁一个范围。所以一般在操作频繁的sql要加上索引。
rc级别
rc跟rr的区别:上图也说明了,rc级别没有加间隙锁,也就是gap。会导致幻读,也就是你读完一个范围的数据之后,别人修改这个范围的数据,你再次去读,会读到不同的数据。产生幻读。
- update级别没有命中唯一索引,也是会锁一定范围,但是会释放没有不匹配的行,这样就减少了死锁的可行性。
- rc级别会读到别人更新的数据
读未提交跟串行读比较鸡肋就不看了。
参考的官方文档
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)