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 ...
随机推荐
- ecshop之transport和jquery冲突之完美解决方案
众所周知:ecshop的transport.js文件和Jquery是冲突的,两个文件不能同时调用,现给出以下完美解决方案:原因分析:在transport.js文件中,大概 580行到590行之间,这个 ...
- Asp.Net网页头部动态加载标题、描述、关键字、css和js文件的方法
首先head标签上添加runat="server". protected void Page_Load(object sender, EventArgs e) { Page.Tit ...
- linux 下安装tomcat
1.把安装包放到 tomcat的目录, 2.然后 解压 tar -zxvf apache-tomcat-7.0.70.tar.gz 解压. 3.然后启动tomcat
- Linux 利器- Python 脚本编程入门(一)
导读 众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写.大多数人会认为 Bash (或者其他的 shell 语言)用起来很方便,但一些强大的语言(比如 Python)会 ...
- MySQL分配角色权限
1.创建新用户 通过root用户登录之后创建 >> grant all privileges on *.* to testuser@localhost identified by &quo ...
- OpenCV成长之路(5):图像直方图的应用
正如第4篇文章所说的图像直方图在特征提取方面有着很重要的作用,本文将举两个实际工程中非常实用的例子来说明图像直方图的应用. 一.直方图的反向映射. 我们以人脸检测举例,在人脸检测中,我们第一步往往需要 ...
- BZOJ 4665: 小w的喜糖
Sol DP+容斥. 这就是一个错排的扩展...可是想到容斥却仅限于种数的容斥,如果种数在一定范围内我就会做了QAQ. 但是容斥的是一定在原来位置的个数. 发现他与原来的位置无关,可以先把每个同种的糖 ...
- 强制QQ好友
tencent://AddContact/?fromId=45&fromSubId=1&subcmd=all&uin=32595667&website=www.oicq ...
- HTTP 格式
HTTP请求报文和HTTP响应报文 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP请求报文 一个HTT ...
- select count(*)和select count(1)的区别
一般情况下,Select Count (*)和Select Count(1)两着返回结果是一样的 假如表沒有主键(Primary key), 那么count(1)比count(*)快, 如果有主键的話 ...