mysql官网解读之InnoDB Transaction Model

小鱼儿 2023-06-25 06:11 55阅读 0赞

文章目录

  • MVCC
  • 14.7.2.1事务隔离级别
  • 参考的官方文档

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级别

  1. 上面我们可以看到,rr级别mvcc机制下,同一个事务多次读取的数据都是一样的。
  2. 在update,delete的时候,如果没有命中唯一索引,会去锁一个范围。所以一般在操作频繁的sql要加上索引。

在这里插入图片描述

rc级别

rc跟rr的区别:上图也说明了,rc级别没有加间隙锁,也就是gap。会导致幻读,也就是你读完一个范围的数据之后,别人修改这个范围的数据,你再次去读,会读到不同的数据。产生幻读。

  1. update级别没有命中唯一索引,也是会锁一定范围,但是会释放没有不匹配的行,这样就减少了死锁的可行性。
  2. rc级别会读到别人更新的数据

读未提交跟串行读比较鸡肋就不看了。

参考的官方文档

14.7.2.1事务隔离级别

发表评论

表情:
评论列表 (有 0 条评论,55人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mysql下载教程

    题记:一直再用DataGrip,操作很方便,但是每次遇到导出就有点头疼,今天写这边文章,做一个笔记,希望能给其他老伙计填上一部分坑! 一、下载MySQL [MySQL官网地

    相关 MySQLInnoDB触发器

    对触发器的支持,使的InnoDB也具有了商业数据库的功能 下面给出一个简单的事例,该例针对insert语句,将触发器和表关联起来。其作用相当于累加器,能够将插入表中一列的值累