MySQL数据库的事务隔离级别

原创 2015年11月18日 08:46:51

概述

继续说一下数据库的原理性基础——事务隔离级别。

事务隔离级别说的是并行执行的多个事务之间的关系,另外一个原理性基础——事务传播属性,这个概念说的是存在包含管理的多个事务之间的关系(这个概念应该是在代码层面的,而不是数据库层面的,比如常说的spring事务传播属性)。

事务隔离级别

四种级别:

关键字 隔离级别
read uncommitted 不提交读(其他事务未提交的修改可以读取到)
read committed 提交读(其他事务的修改只有当事务提交后才可以读取到)
repeatable read 可重复读
serializable 串行化

四种级别的影响

隔离级别 脏读可能性 不可重复读可能性 幻读可能性
read uncommitted Y Y Y
read committed N Y Y
repeatable read N N Y
serializable N N N

说一下三种读取问题:
脏读是读取到了另外一个事务未提交的修改,但是该修改最终被回滚取消了。
不可重复读是第一次读取到了一的数据,在第二次读取时被另一个事务修改了,也就是两次读取到数据不一样。
幻读是第二次读取到的数据比第一次读取到的数据多的某些行,也就是在两次读取之间其他的事务进行了插入新行的操作,出现了幻影行。

虽然,上表是《高性能MySQL》给出的,错误是没有。但是要注意,这里给出的是“可能性”,对于InnoDB来说在默认的repeatable read隔离级别是通过多版本并发控制实现了避免幻读功能的。也就是说对于常用的InnoDB引擎来说repeatable read隔离级别完全避免的脏读、不可重复读和幻读的。

隔离级别的修改

1.全局修改

修改mysql.ini配置文件,在最后加上:
[mysqld]
transaction-isolation = REPEATABLE-READ

2.在控制台输入:set session transaction isolation level repeatable read;

3.在应用层面的连接池处修改

dbcp连接池属性:
这里写图片描述

推荐文章

1.下面这篇文章截取了《高性能MySQL》里面的描述,另外添加了蛤蜊级别的修改方法:http://www.cnblogs.com/zemliu/archive/2012/06/17/2552301.html

2.下面这篇说道了事务隔离级别和锁机制(隔离级别也是借用的《高性能MySQL》内容):http://www.cnblogs.com/wenfeng762/archive/2011/11/06/2237253.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

Spring事务管理与数据库隔离级别的关系(Spring+mysql)

之前写过一篇文章《数据库隔离级别(mysql+Spring)与性能分析 》,里面很多问题写的不是很专业,也不是很有逻辑性,现在重新整理一下,希望对大家有帮助。 这部分通过两天时间反复的做实验...
  • hongshan50
  • hongshan50
  • 2014年03月20日 15:36
  • 10571

MySQL事务隔离级别详解

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

更改MySQL的默认事务隔离级别

Mysql的事务隔离级别一共有四个: 大多数的数据库系统的默认事务隔离级别都是:Read committed 而Mysql的默认事务隔离级别是:Repeatable Read 我们可以采用下面这种方法...
  • u012712087
  • u012712087
  • 2015年06月07日 17:45
  • 22446

MySQL数据库事务隔离级别(Transaction Isolation Level)-详细实例!

数据库隔离级别有四种,应用《高性能mysql》一书中的说明:   然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数有:...
  • aggrelxf
  • aggrelxf
  • 2016年06月08日 02:54
  • 923

数据库事务四种隔离级别

定义: 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别。 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted(未授权读取、读未提交)、Read com...
  • tolcf
  • tolcf
  • 2015年10月20日 22:40
  • 18917

MySQL读书笔记-事务,隔离级别,死锁

事务事务,就是一组原子性的SQL查询。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询;如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。即,事务内...
  • delphiwcdj
  • delphiwcdj
  • 2016年07月12日 22:12
  • 883

jdbc事务和事务的隔离级别

在jdbc的使用中以最简单的jdbc的使用为例,说明了jdbc的具体用法。然而在通常项目中,需要考虑更多内容,例如事务。 事务,在单个数据处理单元中,存在若干个数据处理,要么整体成功,要么整...
  • Crow_feiyu
  • Crow_feiyu
  • 2016年05月03日 16:37
  • 3178

数据库事务的隔离级别和传播属性

如果说一个数据库支持事务的操作,那么该数据库必须要具备以下四个特性: 1. 原子性(Atomicity)   原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须...
  • TOP__ONE
  • TOP__ONE
  • 2017年03月28日 15:28
  • 457

spring的事务传播属性与数据库的隔离级别

Hibernate事务与并发问题处理(乐观锁与悲观锁) 一、数据库事务的定义   数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。事务处理可以确保除...
  • registerIn1030
  • registerIn1030
  • 2015年11月03日 10:41
  • 1188

Mysql事务隔离级别与锁

数据库的事务有几种特性,例如一致性和隔离性,一般通过加锁来实现。同时数据库又是一个高并发的应用,如果加锁过度或者不当将严重影响性能。数据库提供了几种隔离级别来供选择,本文通过解析InnoDB的加锁机制...
  • wl6965307
  • wl6965307
  • 2016年05月29日 12:49
  • 2466
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL数据库的事务隔离级别
举报原因:
原因补充:

(最多只允许输入30个字)