事务隔离级别

原创 2018年04月15日 11:58:33

概念

事务的隔离性是指并发事务之间的隔离程度,隔离程度越高,数据可见性越底,能够支持的并发程度越低。

隔离级别

  • READ UNCOMMITTED;
  • READ COMMITTED;
  • REPEATABLE READ(默认);
  • SERIALIZABLE;

READ UNCOMMITTED

定义:事务A能够读取到事务B未提交的数据;
问题:脏读。如果事务B发生回滚,则事务A读取到的数据是错误或者不存在的。

READ COMMITTED

定义:事务A能够读取到事务B已提交的数据;
问题:不可重复读。事务A执行过程中,如果有其它事务提交了写操作,那么事务A内的多次查询记过可能不一致。
实现原理: 锁+MVCC,每次查询数据时,读取最新事务版本的数据。

Each consistent read, even within the same transaction, sets and reads its own fresh snapshot.

REPEATABLE READ

定义:事务A执行过程中,多次查询的结果一致;
问题:幻读。事务A执行过程中,如果有其它事务提交了写操作,那么事务A不感知,比如事务B插入新数据。

Suppose that you are running in the default REPEATABLE READ isolation level. When you issue a consistent read (that is, an ordinary SELECT statement), InnoDB gives your transaction a timepoint according to which your query sees the database. If another transaction deletes a row and commits after your timepoint was assigned, you do not see the row as having been deleted. Inserts and updates are treated similarly.

实现原理: 锁+MVCC,每次查询数据时,只能读取小于等于当前事务版本的数据。

This is the default isolation level for InnoDB. Consistent reads within the same transaction read the snapshot established by the first read. This means that if you issue several plain (nonlocking) SELECT statements within the same transaction, these SELECT statements are consistent also with respect to each other.

SERIALIZABLE

定义:并发事务串行化执行;
问题:性能低下,一般不使用。

参考:

  1. https://dev.mysql.com/doc/refman/5.7/en/innodb-transaction-isolation-levels.html
  2. https://dev.mysql.com/doc/refman/5.7/en/innodb-consistent-read.html
  3. https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_consistent_read;
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangguosb/article/details/79948019

SPRING事务传播特性&事务隔离级别

  • 2012年08月24日 17:59
  • 47KB
  • 下载

Spring事务隔离级别及设置

在Spring中定义了5中不同的事务隔离级别: 【 DEFAULT、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE 】 4 p...
  • lingzhm
  • lingzhm
  • 2015-08-18 11:01:35
  • 991

Oracle 事务隔离级别

Oracle 事务隔离级别
  • Seandba
  • Seandba
  • 2017-05-31 22:11:43
  • 757

Spring事务隔离级别(solation level)介绍及例子

Spring事务隔离级别(solation level)介绍及例子当两个事务对同一个数据库的记录进行操作时,那么,他们之间的影响是怎么样的呢?这就出现了事务隔离级别的概念。数据库的隔离性与并发控制有很...
  • CSDN_so_nice
  • CSDN_so_nice
  • 2017-01-09 17:06:26
  • 2016

查询和设置mysql事务隔离级别

1.查看当前会话隔离级别   select @@tx_isolation;   2.查看系统当前隔离级别   select @@global.tx_isolatio...
  • qq_20545159
  • qq_20545159
  • 2015-05-02 14:03:02
  • 580

事务隔离级别与乐观锁、悲观锁

1.引入      在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这样会产生冲突,就会造成并发性问题。      冲突类型:      (1)脏读                指一个事务...
  • cpf2016
  • cpf2016
  • 2015-02-15 16:54:22
  • 421

Hibernate 事务隔离级别

Hibernate事务隔离级别 脏读Dirty Read 不可重复读Unrepeatable Read 幻读Phantom Read ANCI四种事务隔离级别isolate Read Uncommit...
  • BabyGoodMorning
  • BabyGoodMorning
  • 2017-04-09 15:13:03
  • 474

jdbc事务和事务的隔离级别

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

C#分布式事务隔离级别问题?如何解释不同的隔离级别,结合案例。

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy...
  • zhangshuxia
  • zhangshuxia
  • 2010-12-22 10:38:00
  • 1075

Oracle事务隔离级别

脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。 不可重复读(nonrepeatable read):同一查询在同一事务中多次进行,在此期间,由于其...
  • leozhou13
  • leozhou13
  • 2016-01-03 00:11:21
  • 3871
收藏助手
不良信息举报
您举报文章:事务隔离级别
举报原因:
原因补充:

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