MySQl InnoDB存储引擎实现SQL标准的4种隔离级别(RU,RC,RR,serializable),用来限定事务内外的哪些改变时可见的,哪些时不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。MySQL数据库通过show variables like '%tx_isolation%'命令来查看当前数据库的隔离级别。比如,我的电脑上执行此指令的结果如下:

Variable_name |Value           |
--------------|----------------|
tx_isolation |REPEATABLE-READ |

可以通过set global|session transaction isolation level命令修改全局或者当前会话的事务隔离级别。

目前MySQL版本默认的隔离界别时REPEATABLE-READ

4种隔离级别:

  1. 读未提交(read uncommitted),简称 RU —— 在其中一个事务中,可以读取到其他事务未提交的数据变化。这种读取其他绘画还没提交的事务,叫做 脏读 现象。在生产环境中不建议使用。
  2. 读已提交(read committed),简称 RC —— 在其中一个事务中,可以读取到其他事务已经提交的数据变化。这种读取也可以叫做 不可重复读 ,允许 幻读 现象的发生,是Oracle数据库默认的事务隔离级别。
  3. 可重复读(repeatable read),简称 RR ,它是MySQL默认的事务隔离级别——在其中一个事务中,直到事务结束前,都可以反复读取到事务刚开始时看到的数据,并一直不会发生变化,避免了脏读、不可重复读和幻读现象的发生。
  4. 串行(serializable)—— 在每个读的数据行上都需要加表级共享锁,在每次写数据时都需要加表级排他锁。着就会造成InnoDB的并发能力下降,大量的超时和锁竞争就会发生。不建议使用到生产环境中。

对于RU、RR、RC可以这么理解,举个例子:

你要去一个长达十年的星际旅行。

在旅行前,你和你的女朋友做最后一次告别。

如果在告别前,你的女朋友给了你一张他的照片。

每次你在宇宙飞船上寂寞的时候,都会看看你女朋友的这张照片,而这张照片上面你的女朋友一直都没有变。这就是 可重复读(RR)

如果你在宇宙飞船上可以和你的女朋友进行视频聊天,而每次视频聊天之前你的女朋友都会化妆,画一个很好看的妆,然后美美地和你视频聊天(我们假设每次化妆相当于女朋友这个事务进行了一次提交),你每次都可以看到你女朋友不同的妆容,那么这就是 读已提交(RC)

如果你任何时候都能和你的女朋友视频,但是有的时候你的女朋友还没有来得及化妆,而你的女朋友还是那种不化妆奇丑无比的,见光死的那种,虽然其实你的女朋友不想让你看到她没有化妆的样子,但是有的时候你的视频通话请求来的触不及防(可能就是她刚睡醒的时候),那么你不光能够看到她化妆的样子,还能看到她见光死的样子,这就是 读未提交(RU)

所以我们可以看到:

MySQL默认使用 可重复读 ,它的广告标语是: “让你看到我十年都不变的美貌!”

Oracle默认使用 读已提交 ,他的广告标语是:“每一次让你看到我都觉得美美的!”

不建议使用 读未提交 ,因为不化妆的你女朋友容易引起不适,引发分手问题。

当然,这只是你的女朋友,我的女朋友,即使不化妆,也是美美的(偷笑)。

MySQL中事务的隔离级别的更多相关文章

  1. MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转载)

    http://www.imooc.com/article/17290 http://www.51testing.com/html/38/n-3720638.html https://dev.mysql ...

  2. MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转)

    本文转自https://m.imooc.com/article/details?article_id=17290 感谢作者 上篇记录了我对MySQL 事务 隔离级别read uncommitted的理 ...

  3. Hibernate中事务的隔离级别设置

    Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下

  4. Mysql数据库事务的隔离级别和锁的实现原理分析

    Mysql数据库事务的隔离级别和锁的实现原理分析 找到大神了:http://blog.csdn.net/tangkund3218/article/details/51753243 InnoDB使用MV ...

  5. MySQL数据库事务各隔离级别加锁情况--read uncommitted篇(转)

    本文转自https://m.imooc.com/article/details?article_id=17291,感谢作者 1.目的 1.1 合适人群 1.数据库事务特征我只是背过,并没有很深刻的理解 ...

  6. 高性能MySQL--innodb中事务的隔离级别与锁的关系

    最近买了<高性能MySQL>这本书回来看,从中收益颇多!我来一吐为快! 我们都知道事务,那么在什么情况下我们需要使用事务呢? 银行应用是解释事务的一个经典例子.假设一个银行的数据库有两张表 ...

  7. 一文搞定MySQL的事务和隔离级别

    一.事务简介 事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成. 一个数据库事务通常包含了一个序列的对数据库的读/写操作.它的存在包含有以下两个目的: 为数据库操作序列提供 ...

  8. mysql的事务,隔离级别和锁

    事务就是一组一起成功或一起失败的sql语句.事务还应该具备,原子性,一致性,隔离性和持久性. 一.事务的基本要素 (ACID) 1.原子性:事务开始后,所有的操作,要么全部成功,要么全部失败,不可能处 ...

  9. MySQL数据库事务各隔离级别加锁情况--Repeatable Read && MVCC(转)

    本文转自https://m.imooc.com/article/details?article_id=17289 感谢作者 上节回顾 上两篇记录了我对MySQL 事务 隔离级别read uncommi ...

随机推荐

  1. Deepgreen & Greenplum DBA小白普及课之三

    Deepgreen & Greenplum DBA小白普及课之三(备份问题解答) 不积跬步无以至千里,要想成为一名合格的数据库管理员,首先应该具备扎实的基础知识及问题处理能力.本文参考Pivo ...

  2. 浏览器在线预览pdf、txt、office文件

    //使用文件预览的原因是:TMD微信浏览器屏蔽掉文件下载链接,只好折中使用文件在线预览功能//要点:1.office文件用微软的插件打开 http://view.officeapps.live.com ...

  3. CSS精灵图(王者荣耀案例)

    首先,我们应该知道引入精灵图的原因: 具体是因为,网页上面的每张图片都要经历一次请求才能展示给用户,小的图标频繁的请求服务器,降低页面的加载速度,为了有效地减少服务器接收和发送请求的次数,提高页面的加 ...

  4. Linux 用户和用户组管理之 修改用户名和用户组;修改用户密码

    一.用户账号包括(查看已经存在的账号 | 添加用户账号 |  修改用户账号 | 删除用户账号) 查看存在的账号: more /etc/passwd #或者是 awk -F':' '{ print $1 ...

  5. VIM工具的常用命令快捷键

    一.光标的移动0: 移动到行首.$: 移动到行尾.w: walk移动到下一个单词b: back 移动到上一个单词h或退格: 左移一个字符:后退l或空格: 右移一个字符:前进j: 下移一行:k: 上移一 ...

  6. JS学习之--比较两个Object数组是否相等

    一.问题 在js中是不能直接用“==”或者“===”来计算两个数组是否相等的,那么就需要对数组的值进行比较: 二.次解决方案 对于比较两个数组次要的方法有如下几种,为什么说是次要解决方案呢?因为它不能 ...

  7. 10分钟教你用python 30行代码搞定简单手写识别!

    欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! 手写笔记还是电子笔记好呢? 毕业季刚结束,眼瞅着2018级小萌新马上就要来了,老腊肉小编为了咱学弟学妹们的学习,绞尽脑汁准备编一套大学秘籍, ...

  8. Java 基础:Queue

    下面几个关于Java里queue的说法哪些是正确的()? 正确答案: A C A.LinkedBlockingQueue是一个可选有界队列,不允许null值 B.PriorityQueue,Linke ...

  9. mysql in()后子查询优化

    线上数据发现一条数据大量等待的现象,通过explain发现这个sql写法存在问题,这里简单记录一下. 业务场景是这样: 存在购物车和费用两张表,购物车数据是购买商品时生成,用于记录购买商品数据,同时购 ...

  10. 2.json解析

    static String jsonStr = "{\"sites\":[{\"name\":\"gold\",\"ur ...