Mysql事务隔离级别
在说Isolation之前,需要谈谈关系型数据库的ACID特性。
A(atomicity,原子性),指一个事务要么完全完成,要么全部回滚到起始状态,不存在中间状态。
C(Consistency,一致性),指在事务开始前与事务结束后,及在事务内部,数据的完整性结束不被破坏,即不存在新旧数据的混合情况。如在一个事务处理过程中,有些数据被其他事务修改,则在事务中要么只出现旧值,要么只出现新值,决不能是旧值混在该事务内。
I(Isolation,隔离性),指事务在执行过程中互不干扰,也不能看到其他事务未提交的数据;这种隔离性是通过锁机制来实现的,可以通过调整隔离级别(isolation level)来提升性能或并发性。
D(Durability,持久性),指事务一旦完成,便不可撤消。
在谈隔离级别之前,还有一点要知道:事务是原子性的,要么完成要么回滚,所以对于事务可以很轻易地完成A,D.
对于C,I,就需要通过隔离级别来限制。
另一个常识是:隔离级别越高,ACID特性实现的越好,但数据库的并发性越低,效率越差。
Mysql支持四种隔离级别:
READ UNCOMMITED(读未提交),一个事务可以看到另一个事务未提交的数据,会出现脏数据(dirty data)
READ COMMITTED (读已提交),一个事务只能看到已被提交的数据,可能会出现不可重复读。即在同一事务内同一SELECT会出现不同结果。
REPEATABLE READ(可重复读),通过快照和锁,使得事务只在一个快照上操作,不会出现不可重复读的情况。
SERIALIZABLE(串行化),通过保守的锁策略【修改被别的事务读取的数据的事务都要处于等待状态】,在实现ACID。
具体实验,可参看:http://xm-king.iteye.com/blog/770721。
还需要注意:并不是所有操作都能回滚的,DDL操作就不能。
还有一些隐式提交的事务:
1,DDL
2,对mysql库中的想关使用和修改,如用户等ALTER USER
, CREATE USER
, DROP USER
, GRANT
, RENAME USER
, REVOKE
, SET PASSWORD
.
3,事务控制和锁语句, BEGIN
, LOCK TABLES
, SET autocommit = 1
(if the value is not already 1), START TRANSACTION
, UNLOCK TABLES
.
4,DATALoading
5,Administrative statements. ANALYZE TABLE
, CACHE INDEX
, CHECK TABLE
, FLUSH
, LOAD INDEX INTO CACHE
,OPTIMIZE TABLE
, REPAIR TABLE
, RESET
.
6,Replication control statements. START SLAVE
, STOP SLAVE
, RESET SLAVE
, CHANGE MASTER TO
.
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):事务开始后所有操作,要么全部做完,要么全部不做 ...
- 面试突击61:说一下MySQL事务隔离级别?
MySQL 事务隔离级别是为了解决并发事务互相干扰的问题的,MySQL 事务隔离级别总共有以下 4 种: READ UNCOMMITTED:读未提交. READ COMMITTED:读已提交. REP ...
随机推荐
- C#获取文件/字节数组MD5值方法
找了很多,就这个管用,有时间好好研究一番 public static string GetMD5Hash(string fileName) { try { FileStream file = new ...
- linux 下 修改mysql账号密码
1.root用户登录到mysql数据库代码示例:/usr/local/mysql/bin/mysql -u root -p (输入密码进入mysql)2.进入mysql,输入:代码示例:use mys ...
- iOS开发——UI进阶篇(七)程序启动原理、打电话、发短信
一.Info.plist常见的设置 1.建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 ...
- spring边边角角
我们在使用ssh框架的时候,很多人抱怨为什么之前都运行得好好的,第二天就报错了,我也是被这个问题纠结了很久. 我们来看看spring的配置文件: <?xml version="1.0& ...
- (转载)XML解析之-XStream解析
转载来源:http://hwy584624785.iteye.com/blog/1168680 本例使用XStream生成一个xml文件,再发序列化xml文件内容. XStream是一个简单的类库,可 ...
- 30秒攻破任意密码保护的PC:深入了解5美元黑客神器PoisonTap
近日,著名硬件黑客Samy Kamkar利用5美元设备打造的黑客工具PoisonTap,只需30秒,就可以攻破设置有任意密码的电脑系统,并实现长期后门安装.PoisonTap不是暴力破解密码,而是绕过 ...
- 6.使用AngularJS模板来创建视图
AngularJS模板包含定义了额外的功能,对DOM元素行为的表达式,过滤器和指令. 1.了解模板 表达式:类似js的代码段.在作用域的上下文被求值.可以放置在普通的HTML文本或属性值中 <p ...
- hibernate日常BUG总结
在使用hibernate自动生产表的时候失败, 是配置文件我是从别地方拷贝过来忘记更改,所以报了这个错误. 重新命名了生成表的名称,问题解决! 问题很明显,自动增长的主键应该使用整型. 这里写的是St ...
- 使用socket方式连接Nginx优化php-fpm性能
Nginx连接fastcgi的方式有2种:TCP和unix domain socket 什么是Unix domain socket?-- 维基百科 Unix domain socket 或者 IPC ...
- java前后台之间传值的几种方式
自己写的代码太少,有时候前后台传值还写的不是很熟练,现在总结一下,加深下印象. 1.jquery的Ajax传值 ---->前台到后台 期望功能:把前台用户输入的信息保存在数据库里. 前台jsp代 ...