基本概念:
事务的隔离性就是指当多个事务同时运行时,各事务之间相互隔离,不可互相干扰。如果事务没有隔离性,就容易出现脏读、不可重复读和幻读等情况。事务概念针对不同的数据库基本同用,只是不同的数据库可能会有不同的概念,针对不同的数据库区别可能是默认的事务隔离级别不同而已。
mysql针对数据库事务有如下隔离级别表

隔离级别 脏读 不可重复读 幻读
读未提交 可能 可能 可能
读已提交 不可能 可能 可能
可重复读 不可能 不可能 可能
串行化 不可能 不可能 不可能

注意:上图结构随着你的隔离级别的提高,数据库的效率会随着降低,所以根据我们项目的实际开发需要决定所用数据库,应该选择什么隔离级别。

事务隔离级别实验:
实验结果可参照上表。create table transaction(account_name varchar(40),money int),向其中插入数据,insert into transaction (account_name,money) values (‘godRxy’,10000)。查看当前表的具体信息

查看事务隔离级别select @@transaction_isolation。而我的mysql初始事务隔离级别如下图

由上图可知我的数据库事务隔离级别现在是读未提交。
mysql中我们开启一个事务流程如下图所示:

注意:当我们启动了数据库事务操作的时候,要么是执行成功,要么是执行不成功,不存在执行一半的情况,也就是begin事务之后,要么commit,要么rollback。
接下来我们进行实验。
1.脏读
(1)begin开启事务
(2)更新transaction表中的money数据,pdate transaction set money = 15000 where account_name = ‘godRxy’;
(3)新窗口中重新打开mysql,select * from transaction,这时表中的money应该还是10000,但是实际表中显示数据如下:
所以这即产生了脏读。解决方法,我们可以事务隔离级别表,升级事务隔离级别即可。
我们可以针对本次会话重设隔离级别,set session transaction isolation level read committed,或者全局重设隔离级别set global transaction isolation level read committed。(全局:设置全局的事务隔离级别,该设置不会影响当前已经连接的会话,设置完毕后,新打开的会话,将使用新设置的事务隔离级别)。

2.可重复读
不可重复读(non-repeatable read),是指一个事务范围内,多次查询某个数据,却得到不同的结果。在第一个事务中的两次读取数据之间,由于第二个事务的修改,第一个事务两次读到的数据可能就是不一样的。
3.幻读
幻读(phantom read),是事务非独立执行时发生的一种现象。

例如事务 T1 对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务 T2 又对这个表中插入了一行数据项为“1”的数据,并且提交给数据库。

而操作事务 T1 的用户如果再查看刚刚修改的数据,会发现数据怎么还是 1?其实这行是从事务 T2 中添加的,就好像产生幻觉一样,这就是发生了幻读。
参考博客数据库隔离级别

mysql事务隔离级别与具体实例相关推荐

  1. 5、MySQL事务隔离级别详解

    事务的隔离性就是指当多个事务同时运行时,各事务之间相互隔离,不可互相干扰.如果事务没有隔离性,就容易出现脏读.不可重复读和幻读等情况. 为了保证并发时操作数据的正确性,数据库都会有事务隔离级别的概念. ...

  2. Mysql事务隔离级别及MVCC(多版本并发控制)

    一.MySQL事务隔离级别 先注明一点:以下讨论都是在多事务并发的情境下讨论的 事务的特性(InnoDB引擎才有事务): ACID 原子性:一个事务不可再分割,要么都执行要么都不执行 一致性:一个事务 ...

  3. mysql 事务隔离级别实现原理_MySQL事务隔离级别和实现原理 - 米扑博客

    开发中经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗, 事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢? MySQL 事务 本文所说的 MySQL 事务都是指在 InnoDB 引 ...

  4. mysql 事务 隔离级别_MySQL的四种事务隔离级别

    https://www.cnblogs.com/huanongying/p/7021555.html 本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的 ...

  5. mysql事务隔离级别 花_mysql事务隔离级别

    很多PHP开发者在面试的时候遇到这个问题都会卡壳.这是因为理解得不够透彻,今天让我带领大家梳理一下mysql事务隔离级别 数据库有四种隔离级别,分别是Read uncommitted,Read com ...

  6. mysql事务隔离级别之锁实现原理,脏读、不可重复读、幻读出现原因及解决方案

    mysql事务隔离级别原理 观看了很多网上的博客,挺令人伤心,很难找到想要的答案... 一:所需知识 1,mysql中的锁 1.1,读锁(共享锁) 规则:若事务1对数据对象A加上读锁,则事务1只能读A ...

  7. 揭秘Mysql事务隔离级别之可重复读

    揭秘Mysql事务隔离级别之可重复读 1.可重复读的来源 2.何为不可重复读 3.那么可重复读和不可重复读究竟有什么关系呢? 4.模拟不同事务隔离级别对不可重复的处理情况(有线程执行顺序). 4.1. ...

  8. MySQL事务隔离级别介绍

    SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销. Read Uncommitted(读 ...

  9. MYSQL事务隔离级别详解附加实验

    参考: https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html http://xm-king.iteye.com/blog/77072 ...

最新文章

  1. SAP中供应商确认功能的应用分析
  2. 数据结构Java11【图结构概述、图遍历原理(BFS\DFS)、图遍历代码实现】
  3. 历史上有关人工智能的七个片段
  4. Hibernate之Session merge与update方法
  5. mysql-聚合函数
  6. python字符串比较大小_Python 比较两个字符串大小
  7. 技巧:MacOS 中快速复制文件或文件夹路径
  8. mysql时间戳_MySQL 时间戳(Timestamp)函数
  9. oracle学习(1)--------windows环境下的安装和基本操作
  10. 地方时太阳时html源码,地方时和标准时(25页)-原创力文档
  11. 安卓平板硬件测试软件,《安兔兔硬件检测》:必备的系统工具
  12. python实现日历功能_python 日历(calendar)模块
  13. vuepress-theme-reco的安装与使用
  14. 数组的应用和面向对象的开始6
  15. 新年快乐——我的星星
  16. 【回归预测-ELM预测】基于粒子群算法PSO优化极限学习机预测附matlab代码
  17. 汽车电子功能安全标准ISO26262解析(一)——总述部分
  18. 比特熊故事汇独家|英特尔“非典型性女博士”的大跨步人生
  19. 用计算机怎么计算sh 3,舍伍德数Sh计算公式与在线计算器_三贝计算网_23bei.com
  20. linux 调试c语言,Linux下C语言调试

热门文章

  1. laravel5.4+vue+vux+element的环境搭配
  2. 关于 java.lang.OutOfMemoryError: Java heap space
  3. [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等...
  4. AW_blog 在任意页设置文章的数量
  5. File类的mkdir()与mkdirs()方法的区别
  6. joint和join_MySQL的JOIN(一):用法
  7. Java面向对象之多态解析、final关键字
  8. 使用Python写入docx文件并控制字体颜色
  9. Python模拟汉诺塔问题移动盘子的过程
  10. Python标准库shutil中rmtree()使用回调函数