Mysql事务详解(二)事务的隔离性和容易引起的问题

原创 2016年06月01日 14:43:09

上一篇讲到事务的四大特性,其中有一个是事务的隔离性,即两个事物之间不会互相影响,为了实现这样的功能,就引入了事务的隔离性。

事务的隔离性

为了保证事务的隔离性,自然我们可以把事务设计成单线程的,这样的话效率就会极其低下,为了保证隔离性,又不失效率我们把丧失隔离性的情况分为三种

脏读:读到另一个未提交事务的数据

幻读:在一个事务过程中已经读取了一次表,此时恰巧另一个事务commit,导致这次事务再一次读取表时前后不一致。(表影响)

不可重复读:在一个事务过程中已经读取了一次a数据,此时恰巧另一个事务commit,导致这次事务再一次读取a数据时前后不一致。(行影响)

针对这三种情况推出了四大隔离级别

   四大隔离级别:
                Read uncommitted -- 不防止任何隔离性问题,具有脏读/不可重复度/虚读(幻读)问题
                Read committed -- 可以防止脏读问题,但是不能防止不可重复度/虚读(幻读)问题(mysql默认)
                Repeatable read -- 可以防止脏读/不可重复读问题,但是不能防止虚读(幻读)问题
                Serializable -- 数据库被设计为单线程数据库,可以防止上述所有问题

这四大隔离级别,安全性递增。效率递减

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

不考虑事务隔离可能产生的问题

脏读:A事务中读取到了B事务中未提交的数据,造成数据错误不可重复读:A事务中读取到了B事务中已提交的数据,在特定情景下会产生影响,比如生成统一的数据报表虚读(幻读):A事务中读取到了B事务中已提交的新...
  • franky814
  • franky814
  • 2015年01月25日 17:04
  • 639

事务四大特征:原子性,一致性,隔离性和持久性(ACID),四大acid

一.事务        定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。        准备工作:为了说明事务的ACID原理,我们使用银行账户及资金...
  • longxingzhiwen
  • longxingzhiwen
  • 2016年12月28日 19:31
  • 1066

Spring的事务传播性与隔离级别

Spring的事务传播性与隔离级别   一、事务的四个特性 l  原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做,要么全部做。 l  一致性:数据不会因为事务的执行而遭...
  • yang1982_0907
  • yang1982_0907
  • 2015年03月18日 12:50
  • 4539

事务具有4个属性:原子性、一致性、隔离性、持久性

事务具有4个属性:原子性、一致性、隔离性、持久性 事务是指对系统进行的一组操作,为了保证系统的完整性,事务需要具有ACID特性,具体如下: 1. 原子性(Atomic)      一个事务包...
  • u013366812
  • u013366812
  • 2016年08月22日 15:36
  • 1300

理解事务的隔离性 .

事务是以可控的方式对数据资源进行访问的一组操作。其属性包括原子性、一致性、隔离性和持久性,也就是常说的ACID。其中,隔离性是针对数据资源的并发访问,规定了各个事务之间相互影响的程度。个人认为这是事务...
  • wenzhihui_2010
  • wenzhihui_2010
  • 2013年06月26日 17:22
  • 1282

理解事务——原子性、一致性、隔离性和持久性

介绍事务的ACID特性
  • chosen0ne
  • chosen0ne
  • 2013年08月17日 23:50
  • 29700

spring 中事务的隔离性。

一、在spring配置文件中引入命名空间 二、具有@Transactional 注解的bean自动配置为声明式事务支持    ...
  • lqzxpp
  • lqzxpp
  • 2017年11月08日 15:38
  • 36

spring事务传播特性和事务隔离级别

一、事务传播特性 转自:http://www.iteye.com/topic/35907 在所有使用 spring 的应用中, 声明式事务管理可能是使用率最高的功能了, 但是, 从我观察到的情况看...
  • jjavaboy
  • jjavaboy
  • 2015年04月24日 10:49
  • 5573

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

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

理解事务的ACID和隔离级别

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit),事务是一个数据库概念。但我理解数据库也是一款软件,只是遵循了数据库SQL标准,理解事务,先看看数据库软件...
  • liuxiang87
  • liuxiang87
  • 2016年11月13日 15:50
  • 631
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mysql事务详解(二)事务的隔离性和容易引起的问题
举报原因:
原因补充:

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