这篇文章主要谈谈Mysql事务隔离级别的区别,以及自己的一些感受。

自己一直以来没搞懂“可重复读”和可提交读“两者之间的区别,通过此次的实践,清楚了两者之间的区别。废话不说,先上图看看这几个事务隔离级别。

Mysql数据库总共分为四个事务隔离级别,其中默认的事务隔离级别是:repeatable read,而与其它的数据库不同的是,其它的数据库默认事务隔离级别是read committed(SQL Server、Oracle)。

第一步:SERIALIZABLE

Instance 1:

Instance 2:

可以看到,第二个事务会被BLOCK住,一致显示正在执行中,最终会显示超时。

总结:SERIALIZABLE的事务隔离级别是:在一个事务没有执行完毕之前,第二个事务是无法继续执行的;这也与SERIALIZABLE是顺序执行事务这一点相吻合。

第二步:REPEATABLE READ

Instance 1:

Instance 2:

可以看到,在将数据库事务隔离级别设置为REPEATABLE READ之后,第一个事务在执行插入并提交之后,第二个事务并没有查询到插入的记录。这就是数据库中的“幻读”现象,但是在SERIALIZABLE级别下就不会出现这种现象。

总结:REPEATABLE READ级别并没有SERIALIZABLE级别隔离程度高,会导致“幻读”现象。

第三步:READ COMMITTED

Instance 1:

Instance 2:

可以看到,在第一个事务插入一条记录并且提交之后,在第二个事务中能看到插入的记录。

总结:READ COMMITTED顾名思义,可以读到已经提交的数据,但这也会造成同一个用户运行同一个语句两次,可能会得到不同的结果。

第四步:READ UNCOMMITTED

Instance 1:

Instance 2:

可以看到,READ UNCOMMITTED级别甚至可以读取到未提交的数据,这是相当危险的!如果事务由于其它原因回滚了,就会读取到已经弃用的数据。

总结:READ UNCOMMITTED是四个事务隔离级别中最低的,可以读取到未提交的数据。

开放学习:四个事务隔离级别的性能应当是:serializable<repeatable read<read committed<read uncommitted,这个有待于以后实际测试。

Mysql事务隔离级别学习的更多相关文章

  1. [51CTO]新说MySQL事务隔离级别!

    新说MySQL事务隔离级别! 事务隔离级别这个问题,无论是校招还是社招,面试官都爱问!然而目前网上很多文章,说句实在话啊,我看了后我都怀疑作者弄懂没!本文所讲大部分内容,皆有官网作为佐证,因此对本文内 ...

  2. 查询mysql事务隔离级别

    查询mysql事务隔离级别 查询mysql事务隔离级别 分类: DB2011-11-26 13:12 2517人阅读 评论(0) 收藏 举报 mysqlsessionjava   1.查看当前会话隔离 ...

  3. MySQL事务隔离级别测试实例

    https://www.cnblogs.com/huanongying/p/7021555.html MySQL事务隔离级别 事务隔离级别 脏读 不可重复读 幻读 读未提交(read-uncommit ...

  4. Mysql事务-隔离级别

    MYSQL事务-隔离级别 事务是什么? 事务简言之就是一组SQL执行要么全部成功,要么全部失败.MYSQL的事务在存储引擎层实现. 事务都有ACID特性: 原子性(Atomicity):一个事务必须被 ...

  5. MySQL事务隔离级别 解决并发问题

    MySQL事务隔离级别 1. 脏读: 骗钱的手段, 两个窗口或线程分别调用数据库转账表,转账后未提交,对方查看到账后,rollback,实际钱没转. 演示方法: mysql默认的事务隔离级别为repe ...

  6. mysql事务隔离级别、脏读、幻读

    Mysql事务隔离级别本身很重要,再加上可能是因为各大公司面试必问的缘故,在博客中出现的概率非常高,但不幸的是,中国的技术博客要么是转载,要么是照抄,质量参差不齐,好多结论都是错的,对于心怀好奇之心想 ...

  7. mysql事务隔离级别与设置

    mysql数据库,当且仅当引擎是InnoDB,才支持事务: 1.隔离级别 事务的隔离级别分为:未提交读(read uncommitted).已提交读(read committed).可重复读(repe ...

  8. MySQL事务隔离级别(二)

    搞清楚MySQL事务隔离级别 首先创建一个表 account.创建表的过程略过(由于 InnoDB 存储引擎支持事务,所以将表的存储引擎设置为 InnoDB).表的结构如下: 为了说明问题,我们打开两 ...

  9. MySQL事务隔离级别(一)

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...

随机推荐

  1. [转] Brook 搭建教程

    https://www.jiongjun.cc/technology/500.html 在搭建 brook 代理之前,首先要求你要有一台国外 vps,关于国外 vps 选择,可以参考这篇:推荐几款国外 ...

  2. ssl证书专题(3):创建CA和申请证书

    请看:  https://www.cnblogs.com/mingzhang/p/8949541.html

  3. mysql 删除所有表

    SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')FROM information_schema.tablesWHERE table_sch ...

  4. 第二篇flask响应方式

    响应三件套 1.Flask中的HTTPResponse @app.route('/home') # app中的route装饰器 def home(): # 视图 return '登陆成功' #HTTP ...

  5. JQuery 绑定单击事件到某个函数的的方法

    <script> function 我会在加载完页面马上执行() { alert('我会在加载完页面马上执行'); } function 我只会在按钮点击时才执行() { alert('我 ...

  6. react-native-splash-screen 插件 android 系统app崩溃问题

    问题 react-native版本 0.53.3 react-native-splash-screen版本 3.0.6 一切配置妥当后出现如下问题: 在android studio里的调试报错为and ...

  7. GMA Round 1 波动函数

    传送门 波动函数 f(x)是一个定义在R上的偶函数,f(x)=f(2-x),当$x\in[-1,1]$时,f(x)=cos(x),则函数$g(x)=f(x)-|cos(\pi x)|$,求g(x)在[ ...

  8. linux locate命令

    1.命令简介         locate(locate) 命令用来查找文件或目录. locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/ml ...

  9. 22 使用ArcMap 连接Server提示【远程服务器收到了错误的地址】

    情景一: 软件:ArcMap.对应版本ArcGIS server 可能是用了FQ软件 解决办法:打开浏览器设置,如谷歌浏览器,高级设置,系统下--打开代理设置--局域网设置--取消勾选  使用自动配置 ...

  10. HDFS的WEB页面访问常见问题

    HDFS的WEB UI管理页面 50070 端口 无法访问解决办法! 本文基于HADOOP-3..1.0,Cecntos7.0环境下进行测试,所以遇到很多新鲜的问题: 特别注意:HaDoop3.0之前 ...