mysql事务隔离级别与具体实例
基本概念:
事务的隔离性就是指当多个事务同时运行时,各事务之间相互隔离,不可互相干扰。如果事务没有隔离性,就容易出现脏读、不可重复读和幻读等情况。事务概念针对不同的数据库基本同用,只是不同的数据库可能会有不同的概念,针对不同的数据库区别可能是默认的事务隔离级别不同而已。
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事务隔离级别与具体实例相关推荐
- 5、MySQL事务隔离级别详解
事务的隔离性就是指当多个事务同时运行时,各事务之间相互隔离,不可互相干扰.如果事务没有隔离性,就容易出现脏读.不可重复读和幻读等情况. 为了保证并发时操作数据的正确性,数据库都会有事务隔离级别的概念. ...
- Mysql事务隔离级别及MVCC(多版本并发控制)
一.MySQL事务隔离级别 先注明一点:以下讨论都是在多事务并发的情境下讨论的 事务的特性(InnoDB引擎才有事务): ACID 原子性:一个事务不可再分割,要么都执行要么都不执行 一致性:一个事务 ...
- mysql 事务隔离级别实现原理_MySQL事务隔离级别和实现原理 - 米扑博客
开发中经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗, 事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢? MySQL 事务 本文所说的 MySQL 事务都是指在 InnoDB 引 ...
- mysql 事务 隔离级别_MySQL的四种事务隔离级别
https://www.cnblogs.com/huanongying/p/7021555.html 本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的 ...
- mysql事务隔离级别 花_mysql事务隔离级别
很多PHP开发者在面试的时候遇到这个问题都会卡壳.这是因为理解得不够透彻,今天让我带领大家梳理一下mysql事务隔离级别 数据库有四种隔离级别,分别是Read uncommitted,Read com ...
- mysql事务隔离级别之锁实现原理,脏读、不可重复读、幻读出现原因及解决方案
mysql事务隔离级别原理 观看了很多网上的博客,挺令人伤心,很难找到想要的答案... 一:所需知识 1,mysql中的锁 1.1,读锁(共享锁) 规则:若事务1对数据对象A加上读锁,则事务1只能读A ...
- 揭秘Mysql事务隔离级别之可重复读
揭秘Mysql事务隔离级别之可重复读 1.可重复读的来源 2.何为不可重复读 3.那么可重复读和不可重复读究竟有什么关系呢? 4.模拟不同事务隔离级别对不可重复的处理情况(有线程执行顺序). 4.1. ...
- MySQL事务隔离级别介绍
SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销. Read Uncommitted(读 ...
- MYSQL事务隔离级别详解附加实验
参考: https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html http://xm-king.iteye.com/blog/77072 ...
最新文章
- SAP中供应商确认功能的应用分析
- 数据结构Java11【图结构概述、图遍历原理(BFS\DFS)、图遍历代码实现】
- 历史上有关人工智能的七个片段
- Hibernate之Session merge与update方法
- mysql-聚合函数
- python字符串比较大小_Python 比较两个字符串大小
- 技巧:MacOS 中快速复制文件或文件夹路径
- mysql时间戳_MySQL 时间戳(Timestamp)函数
- oracle学习(1)--------windows环境下的安装和基本操作
- 地方时太阳时html源码,地方时和标准时(25页)-原创力文档
- 安卓平板硬件测试软件,《安兔兔硬件检测》:必备的系统工具
- python实现日历功能_python 日历(calendar)模块
- vuepress-theme-reco的安装与使用
- 数组的应用和面向对象的开始6
- 新年快乐——我的星星
- 【回归预测-ELM预测】基于粒子群算法PSO优化极限学习机预测附matlab代码
- 汽车电子功能安全标准ISO26262解析(一)——总述部分
- 比特熊故事汇独家|英特尔“非典型性女博士”的大跨步人生
- 用计算机怎么计算sh 3,舍伍德数Sh计算公式与在线计算器_三贝计算网_23bei.com
- linux 调试c语言,Linux下C语言调试
热门文章
- laravel5.4+vue+vux+element的环境搭配
- 关于 java.lang.OutOfMemoryError: Java heap space
- [原创]java WEB学习笔记80:Hibernate学习之路--- hibernate配置文件:JDBC 连接属性,C3P0 数据库连接池属性等...
- AW_blog 在任意页设置文章的数量
- File类的mkdir()与mkdirs()方法的区别
- joint和join_MySQL的JOIN(一):用法
- Java面向对象之多态解析、final关键字
- 使用Python写入docx文件并控制字体颜色
- Python模拟汉诺塔问题移动盘子的过程
- Python标准库shutil中rmtree()使用回调函数