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):事务开始后所有操作,要么全部做完,要么全部不做 ...
随机推荐
- html_基础标签
块级标签: 默认情况会占位一整行行内(内联)标签:默认只有自己的大小 块级标签如: <div>我是字</div> <h1>标题1</h1> < ...
- Codeforces 730 J.Bottles (01背包)
<题目链接> 题目大意: 有n个瓶子,各有水量和容量.现在要将这写瓶子里的水存入最少的瓶子里.问你最少需要的瓶子数?在保证瓶子数最少的情况下,要求转移的水量最少. 解题分析:首先,最少的瓶 ...
- 归并排序&&归并排序求逆序对
归并排序 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序 ...
- maven deploy Return code is: 400, ReasonPhrase: Bad Request.
最近在自己本地deploy jar 到本地 nexus的时候,报错 Return code is: 400, ReasonPhrase: Bad Request. 解决思路: 1.查看maven pr ...
- (82)Wangdao.com第十六天_JavaScript 异步操作
异步操作 单线程模型 指的是,JavaScript 只在一个线程上运行 也就是说,JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待 注意,JavaScript 只在一个线程上运 ...
- hook NtTerminateProcess进行应用的保护
这段时间在学习驱动,然后看到hook ssdt的代码,找了一个写的清晰的学习了一下:http://www.netfairy.net/?post=218 这里是hook NtOpenProcess,但是 ...
- C#基础概念总结
C#基础概念总结 1..NET Framework概念 2. C#的含义: 3.什么是面向对象编程: 4.Visual Studio开发工具: 5..NET程序运行的机制: 1..Net Framew ...
- Android手机camera和IMU的标定
https://qingsimon.github.io/post/2018-12-28-android%E6%89%8B%E6%9C%BA%E7%9B%B8camera%E5%92%8Cimu%E7% ...
- python pip 安装模块步骤
在线安装,cmd输入 命令:pip install mysql-connector-python 注:直接在默认路径下输入
- 1python简介
02 python和03 python的区别: python:优美,清晰,简单. python2x: 源码重复,混乱,冗余. 源码不规范. python3x: 源码整合,优美,清晰 ...