mysql会话事务隔离_MySQL的事务隔离级别
MySQL的事务隔离级别
隔离级别
1、事务的隔离级别决定了事务之间可见的级别。
2、当多个客户端并发地访问同一个表时,可能出现下面的一致性问题:
● 脏读取(Dirty Read)
一个事务开始读取了某行数据,但是另外一个事务已经更新了此数据但没有能够及时提交,这就出现了脏读取。
● 不可重复读(Non-repeatable Read)
在同一个事务中,同一个读操作对同一个数据的前后两次读取产生了不同的结果,这就是不可重复读。
● 幻像读(Phantom Read)
幻像读是指在同一个事务中以前没有的行,由于其他事务的提交而出现的新行。
四个隔离级别
InnoDB 实现了四个隔离级别,用以控制事务所做的修改,并将修改通告至其它并发的事务:
● 读未提交(READ UMCOMMITTED)
允许一个事务可以看到其他事务未提交的修改
● 读已提交(READ COMMITTED)
允许一个事务只能看到其他事务已经提交的修改,未提交的修改是不可见的
● 可重复读(REPEATABLE READ)
确保如果在一个事务中执行两次相同的SELECT语句,都能得到相同的结果,不管其他事务是否提交这些修改。 (银行总账)
该隔离级别为InnoDB的缺省设置
● 串行化(SERIALIZABLE) 【序列化】
将一个事务与其他事务完全地隔离。
例如:
A可以开启事物,B也可以开启事物
A在事物中执行DML语句时,未提交
B不以执行DML,DQL语句
隔离级别与一致性问题的关系
设置服务器缺省隔离级别
1、通过修改配置文件设置
● 可以在my.ini文件中使用transaction-isolation选项来设置服务器的缺省事务隔离级别
● 该选项值可以是:
READ-UNCOMMITTED
READ-COMMITTED
REPEATABLE-READ
SERIALIZABLE
● 例如:
[mysqld]
transaction-isolation = READ-COMMITTED
2、通过命令动态设置隔离级别
● 隔离级别也可以在运行的服务器中动态设置,应使用SET TRANSACTION ISOLATION LEVEL语句
● 其语法模式为:
SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL
其中的可以是:
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
● 例如: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
隔离级别的作用范围
1、事务隔离级别的作用范围分为两种:
● 全局级:对所有的会话有效
● 会话级:只对当前的会话有效
2、例如:设置会话级隔离级别为READ COMMITTED :
mysql> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
或:
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
3、设置全局级隔离级别为READ COMMITTED :
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
查看隔离级别
1、服务器变量tx_isolation(包括会话级和全局级两个变量)中保存着当前的会话隔离级别。
2、为了查看当前隔离级别,可访问tx_isolation变量:
● 查看会话级的当前隔离级别:
mysql> SELECT @@tx_isolation;
或:
mysql> SELECT @@session.tx_isolation;
● 查看全局级的当前隔离级别:
mysql> SELECT @@global.tx_isolation;
并发事务与隔离级别示例
read uncommitted(未提交读) --脏读(Drity Read):
会话一
会话二
mysql> prompt s1>
mysql> use bjpowernode
s1>use bjpowernode
mysql> prompt s2>
s1>create table tx (
id int(11),
num int (10)
);
s1>set global transaction isolation level read uncommitted;
s1>start transaction;
s2>start transaction;
s1>insert into tx values (1,10);
s2>select * from tx;
s1>rollback;
s2>select * from tx;
read committed(已提交读)
会话一
会话二
s1> set global transaction isolation level read committed;
s1>start transaction;
s2>start transaction;
s1>insert into tx values (1,10);
s1>select * from tx;
s2>select * from tx;
s1>commit;
s2>select * from tx;
repeatable read(可重复读)
会话一
会话二
s1> set global transaction isolation level repeatable read;
s1>start transaction;
s2>start transaction;
s1>select * from tx;
s1>insert into tx values (1,10);
s2>select * from tx;
s1>commit;
s2>select * from tx;
mysql会话事务隔离_MySQL的事务隔离级别相关推荐
- 不属于mysql事物的特性_mysql基础---事务 事务的四大特性(ACID) 四种隔离级别
一.事务 mysql中,事务是一个最小的不可分割单元.事务能够保证一个业务的完整性. eg:银行转账 a -> -100 update user set money=money-100; b - ...
- mysql 5.1支持事务吗_MySQL的事务和隔离级别 | 旺旺知识库
一.什么是事务? 数据库的事物,是指将一系列的操作作为一个逻辑单元来执行,即加入由十条SQL语句组成的一个事物,则要么则十条都执行成功,要么都不执行!事务处理可以确保除非事务性单元内的所有操作都成功完 ...
- mysql有三种事务模式_MySQL之事务与三大范式
一.MySQL事务 在MySQL中将一组有序的增删改操作看做一个独立的执行单元,当这一组所有的操作都成功,事务执行成功,如果其中有一个操作失败,事务执行回滚.MySQL 事务主要用于处理操作量大,复杂 ...
- mysql 长事务查询_MySQL长事务详解
前言: 『入门MySQL』系列文章已经完结,今后我的文章还是会以MySQL为主,主要记录下近期工作及学习遇到的场景或者自己的感悟想法,可能后续的文章不是那么连贯,但还是希望大家多多支持.言归正传,本篇 ...
- mysql事务并发控制_MySQL之事务及并发控制
本节索引: 一.事务Transaction 二.事务的隔离级别 三.并发控制 四.MVCC-多版本的并发控制协议 一.事务 什么是事务? 事务Transactions:一组原子性的SQL语句,或一个独 ...
- mysql事务 并发_Mysql关于事务并发带来的问题
MySQL从5.5.8开始,Innodb就是默认的存储引擎,Innodb最大的特点是:支持事务.支持行级锁. 既然支持事务,那么就会有处理并发事务带来的问题:更新丢失.脏读.不可重复读.幻读:相应的为 ...
- mysql 幻读的隔离_MySQL的RR隔离级别与幻读问题
最近在网上看了不少mysql锁的文章,不少文章都提到InnoDB的RR隔离级别(Repeatable Read)无法解决幻读的问题.对此问题作者亲自做了一些实验,将实验结论记录在此. 本次实验的mys ...
- 一条mysql语句是事务吗_mysql中事务
事务控制语言 什么叫做"事务": 想象一个场景: 小明给小花 汇款 5000元 买IPHONE,操作界面不用管,不管什么操作界面,最终都要落实到这样两条语句的执行: update ...
- mysql语句中事务可靠性_MySql的事务使用与示例详解
在MySQL中,事务就是一个逻辑工作单元的一系列步骤.事务是用来保证数据操作的安全性. 事务的特征: 1.Atomicity(原子性) 2.Consistency(稳定性,一致性) 3.Isolati ...
最新文章
- window.open()函数参数说明
- 数据库中char与varchar类型的区别
- pageSet还没完count就执行了
- 工作后和在学校最大的区别是什么?
- Python中的异常处理Try...except...finally的使用的简单理解
- android wear中国版,AndroidWear中国版App——小白上手指南
- centos7 服务器安装nginx,mysql,php
- linux系统如何切换语言环境变量,Linux系统中如何修改某用户语言环境变量
- AOP日志组件 多次获取post参数
- python sys.exc_info()详解
- iPhone、iPad尺寸
- unity 使用像素实现墙面子弹留孔效果(给已有贴图模型叠加贴图)
- 对话系统综述 *Advances and Challenges in Conversational Recommender Systems: A Survey*
- 再见python你好go语言_再见,Python。你好,Go语言。
- UX、UI、 IA和IxD
- 连接请求被计算机拒绝访问,Windows 10共享打印机解决方案被拒绝访问
- 虚拟机上安装eclipse教程
- 巴菲特08年致股东信
- 工业机器人上下料数控车床实训平台
- [转帖]贪官给儿子的一封家信
热门文章
- HTML打开电脑摄像头
- 为什么我购买了 iCloud 额外的 50g 存储空间?
- TPO68C3|Reschedule An Exam|托福听力精听|21:40~22:40
- php手绘功能,Canvas的手绘风格图形库Rough.js
- 在高层建筑中多少层开始使用爬架?联筑赚告诉你答案!
- 万科回应入股泰禾集团:仍存在不确定性,后者已是失信被执行人
- uniapp通话录音功能
- 官网下载eclipse出现mirror.kakao.com 的响应时间过长+解决方法
- 银行卡号合法性验证小结
- Python中时间 时间戳之间的转换