Mysql事务隔离级别学习
这篇文章主要谈谈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事务隔离级别学习的更多相关文章
- [51CTO]新说MySQL事务隔离级别!
新说MySQL事务隔离级别! 事务隔离级别这个问题,无论是校招还是社招,面试官都爱问!然而目前网上很多文章,说句实在话啊,我看了后我都怀疑作者弄懂没!本文所讲大部分内容,皆有官网作为佐证,因此对本文内 ...
- 查询mysql事务隔离级别
查询mysql事务隔离级别 查询mysql事务隔离级别 分类: DB2011-11-26 13:12 2517人阅读 评论(0) 收藏 举报 mysqlsessionjava 1.查看当前会话隔离 ...
- MySQL事务隔离级别测试实例
https://www.cnblogs.com/huanongying/p/7021555.html MySQL事务隔离级别 事务隔离级别 脏读 不可重复读 幻读 读未提交(read-uncommit ...
- Mysql事务-隔离级别
MYSQL事务-隔离级别 事务是什么? 事务简言之就是一组SQL执行要么全部成功,要么全部失败.MYSQL的事务在存储引擎层实现. 事务都有ACID特性: 原子性(Atomicity):一个事务必须被 ...
- MySQL事务隔离级别 解决并发问题
MySQL事务隔离级别 1. 脏读: 骗钱的手段, 两个窗口或线程分别调用数据库转账表,转账后未提交,对方查看到账后,rollback,实际钱没转. 演示方法: mysql默认的事务隔离级别为repe ...
- mysql事务隔离级别、脏读、幻读
Mysql事务隔离级别本身很重要,再加上可能是因为各大公司面试必问的缘故,在博客中出现的概率非常高,但不幸的是,中国的技术博客要么是转载,要么是照抄,质量参差不齐,好多结论都是错的,对于心怀好奇之心想 ...
- mysql事务隔离级别与设置
mysql数据库,当且仅当引擎是InnoDB,才支持事务: 1.隔离级别 事务的隔离级别分为:未提交读(read uncommitted).已提交读(read committed).可重复读(repe ...
- MySQL事务隔离级别(二)
搞清楚MySQL事务隔离级别 首先创建一个表 account.创建表的过程略过(由于 InnoDB 存储引擎支持事务,所以将表的存储引擎设置为 InnoDB).表的结构如下: 为了说明问题,我们打开两 ...
- MySQL事务隔离级别(一)
本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...
随机推荐
- docker-- 卷
进入容器centos终端中 #docker attach c1 在 容器中安装nginx #yum install epel-relesae #yum install nginx # ...
- Django----admin模块初识
步骤1:创建管理员用户:在Terminal输入:pythonmanage.py createsuperuser 如下图所示说明创建成功 步骤二:运行项目文件:python manage.py runs ...
- url传参过程中文字需编码、解码使用
1.链接进行编码跳转:window.location.href = encodeURI(url) 2.获取当前链接进行解码:decodeURI(window.location); 3.获取url中参数 ...
- vue_源码 原理 剖析
相关基础知识点 // 可以让 任意函数/方法 成功临时指定成对象的方法进行调用 - call/apply // 1. 根据伪数组生成 真数组 const lis = document.getEleme ...
- centos7下部署nginx与php
背景介绍 相信读者在看这篇文章之前已经fastcgi,php-fpm有所了解.大概来讲php语言需要fastcgi程序,即php解释器解释,而php解释器需要php-fpm管理器进行调度. 以下对CG ...
- 27 ArcMap加载天地图服务一片空白怎么办
在ArcMap中添加WMTS Server,连接上了,但是不显示 天地图升级向导:http://lbs.tianditu.gov.cn/authorization/authorization.html ...
- 2019.3.22 JMeter基础操作
1.添加线程组:testplan—添加—线程(用户)Threads(Users) 线程属性值:线程数(虚拟用户数).Rump-up(准备时长:设置所有线程全部启动时间).循环次数(每个线程重复发送请求 ...
- App拉起小程序提示跳转失败
App拉起小程序提示跳转失败 req.userName = "gh_8afldfalsejw"; // 小程序的原始ID,注意不是Appid
- Overview of .rdp file settings
On this page you will find an overview of most of the available .rdp file settings which can be used ...
- 单片机stm32小白入门级学习路线“图”
学习stm32的是真的越来越多了,当然我也是其中语言,所以对于stm32的学习路线非常的感兴趣,所以我也分享一下 虽然是盗图吧 不过也算是分享 ,下边有觉得不错的视频资料 也奉上 (stm ...