当我们的数据库的引擎是InnoDB的时候。

事务的隔离级别分为:未提交读(read uncommitted)、已提交读(read committed)、可重复读(repeatable read)、串行化(serializable)。

未提交读

未提交读的意思就是比如原先name的值是小刚,然后有一个事务B`update table set name = '小明' where id = 1`,它还没提交事务。同时事务A也起了,有一个select语句`select name from table where id = 1`,在这个隔离级别下获取到的name的值是小明而不是小刚。那万一事务B回滚了,实际数据库中的名字还是小刚,事务A却返回了一个小明,这就称之为脏读。

已提交读

按照上面那个例子,在已提交读的情况下,事务A的select name 的结果是小刚,而不是小明,因为在这个隔离级别下,一个事务只能读到另一个事务修改的已经提交了事务的数据。但是有个现象。

还是拿上面的例子说。如果事务B 在这时候隐式提交了时候,然后事务A的select name结果就是小明了,这都没问题,但是事务A还没结束,这时候事务B又`update table set name = '小红' where id = 1`并且隐式提交了。然后事务A又执行了一次`select name from table where id = 1`结果就返回了小红。这种现象叫不可重复读

可重复读

可重复读就是一个事务只能读到另一个事务修改的已提交了事务的数据,但是第一次读取的数据,即使别的事务修改的这个值,这个事务再读取这条数据的时候还是和第一次获取的一样,不会随着别的事务的修改而改变。

这和已提交读的区别就在于它重复读取的值是不变的。所以取了个贴切的名字叫可重复读。按照这个隔离级别下那上面的例子就是

串行化

上面三个隔离级别对同一条记录的读和写都可以并发进行,但是串行化格式下就只能进行读-读并发。只要有一个事务操作一条记录的写,那么其他要访问这条记录的事务都得等着。

一般没人用串行化,性能比较低,常用的是已提交读和可重复读。而已提交读和可重复读的实现主要是基本版本链和readView。而它们之间的区别其实就是生成readView的策略不同。具体得独立开一篇讲,太多了一篇放不下。

如果错误欢迎指正

个人公众号:yes的练级攻略

mysql释放练级_面试官:谈谈Mysql事务隔离级别?相关推荐

  1. 联合索引会创建几个索引_面试官:谈谈你对mysql联合索引的认识?

    引言 这篇文章作为<面试官:谈谈你对mysql索引的认识>的续篇,我当时在写这篇的时候,考虑到篇幅问题所以略去了联合索引的内容,今天给大家补上. 本文预计分为两个部分:(1)联合索引部分的 ...

  2. mysql 唯一索引_面试官:谈谈你对mysql索引的认识?

    引言 大家好,我渣渣烟.我曾经写过一篇<面试官:讲讲mysql表设计要注意啥>,当时写完后,似乎效果还行! 于是呢,决定再来一个mysql的数据库专题,这篇我们就来谈谈关于索引方面的mys ...

  3. java面试mysql的引擎_面试官:你用过mysql哪些存储引擎,请分别展开介绍一下

    这是高级开发者面试时经常被问的问题.实际我们在平时的开发中,经常会遇到的,在用SQLyog等工具创建表时,就有一个引擎项要你去选.如下图: Mysql的存储引擎有这么多种,实际我们在平时用的最多的莫过 ...

  4. mysql 脏读 不可重复读 幻读_mysql事务隔离级别/脏读/不可重复读/幻读详解

    一.四种事务隔离级别 1.1read uncommitted 读未提交 即:事务A可以读取到事务B已修改但未提交的数据. 除非是文章阅读量,每次+1这种无关痛痒的场景,一般业务系统没有人会使用该事务隔 ...

  5. 个人对于MySQL的理解_面试官:谈谈你对Mysql的MVCC的理解?

    MVCC(Mutil-Version Concurrency Control),就是多版本并发控制.MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问. 在Mysql的In ...

  6. mysql怎么用_面试官都是这样发问的,连环冲锋炮,看你怎么抵挡(上)

    本内容来源于和尚 16 年毕业的学长,先在 58,后阿里,如今准备跳槽了,以下内容为他的最近面试经历 我最近从大厂离职之后在合肥呆了个把月,之前已经准备了半个多月,从7月底开始投简历面试,目前是jav ...

  7. mysql幻读和不可重复读的区别_面试官:MySQL的可重复读级别能解决幻读吗

    Java面试笔试面经.Java技术每天学习一点 Java面试 关注不迷路 作者:宁愿. 来源:https://juejin.im/post/5c9040e95188252d92095a9e 引言 之前 ...

  8. 不可重复读和幻读的区别_面试官:MySQL的可重复读级别能解决幻读吗

    Java面试笔试面经.Java技术每天学习一点 Java面试 关注不迷路 作者:宁愿. 来源:https://juejin.im/post/5c9040e95188252d92095a9e 引言 之前 ...

  9. mysql自增_面试官:为什么 MySQL 的自增主键不单调也不连续?

    为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...

最新文章

  1. django-pure-pagination 组件使用
  2. Oracle 12c   归档模式更改
  3. js中判断-0 ,js无穷数Infinity
  4. django不修改数据库创外键_python小项目使用django的数据库模型
  5. Python 进阶:enum 模块源码分析
  6. js 监听页面url锚点变化 window.onpopstate
  7. node.js async await 配合Promise对象使用
  8. linux 配置trac界面显示为中文,安装back|track 5 r3并配置中文界面简单教程
  9. DirtyCow漏洞复现(脏牛、大脏牛、Linux、Android、提权)
  10. python函数格式化_Python通过format函数格式化显示值
  11. 持续输出|我的 2019 年
  12. DevExpress WinForm 控件汉化方法 代码(一)
  13. 安装win2008R2系统并激活
  14. 外文文献找不到怎么办?
  15. IE9打开的html文件打印不了,IE9无法查看打印预览的2个解决方法
  16. ZZULIOJ:1035: 分段函数求值
  17. 服务器运行时间设置,服务器的时间同步设置方法
  18. 1.1 创造性和动机
  19. u8 客户端修改服务器地址,u8服务器地址怎么修改
  20. 【Codeforces613D】Kingdom and its Cities【虚树】【Tree DP】

热门文章

  1. jboss1.7_快速指南:剖析JBoss BPM跨进程通信
  2. mysql 变量作用域_二十二、MySQL基础系列笔记之变量
  3. 计算机应用基础模拟试题一,计算机应用基础模拟试题1
  4. Spring Security 实战干货:客户端OAuth2授权请求的入口在哪里
  5. Spring Cloud Alibaba基础教程:使用Sentinel实现接口限流
  6. 网页请求复制为curl,然后导入postman调用
  7. Java 注解 --很有趣的一篇文章
  8. centernet2 win10使用笔记
  9. win10 右键 命令行
  10. python 均值漂移