来源:https://www.cnblogs.com/wms01/p/6183241.html

事务隔离级别(IsolationLevel)

事务的特性(ACID)
1、原子性(Atomicity)事物是数据库的逻辑工作单位,事务中的诸多操作要么全做要么全不做
2、一致性(Consistency)事务执行结果必须是使数据库从一个一致性状态变到另一个一致性状态
3、隔离性(Isolation)一个数据的执行不能被其他事务干扰
4、持续性/永久性(Durability)一个事务一旦提交,它对数据库中的数据改变是永久性的

隔离级别与并发性是互为矛盾的:隔离程度越高,数据库的并发性越差;隔离程度越低,数据库的并发性越好,这点很好理解

事务的隔离级别(IsolationLevel)

 1     // 摘要: 2     //     Specifies the transaction locking behavior for the connection.3     public enum IsolationLevel4     {5         // 摘要: 6         //     A different isolation level than the one specified is being used, but the7         //     level cannot be determined.8         Unspecified = -1,9         //
10         // 摘要:
11         //     The pending changes from more highly isolated transactions cannot be overwritten.
12         Chaos = 16,
13         //
14         // 摘要:
15         //     A dirty read is possible, meaning that no shared locks are issued and no
16         //     exclusive locks are honored.
17         ReadUncommitted = 256,
18         //
19         // 摘要:
20         //     Shared locks are held while the data is being read to avoid dirty reads,
21         //     but the data can be changed before the end of the transaction, resulting
22         //     in non-repeatable reads or phantom data.
23         ReadCommitted = 4096,
24         //
25         // 摘要:
26         //     Locks are placed on all data that is used in a query, preventing other users
27         //     from updating the data. Prevents non-repeatable reads but phantom rows are
28         //     still possible.
29         RepeatableRead = 65536,
30         //
31         // 摘要:
32         //     A range lock is placed on the System.Data.DataSet, preventing other users
33         //     from updating or inserting rows into the dataset until the transaction is
34         //     complete.
35         Serializable = 1048576,
36         //
37         // 摘要:
38         //     Reduces blocking by storing a version of data that one application can read
39         //     while another is modifying the same data. Indicates that from one transaction
40         //     you cannot see changes made in other transactions, even if you requery.
41         Snapshot = 16777216,
42     }

常用状态分析:

  1、ReadUncommitted

    表示:未提交读。当事务A更新某条数据的时候,不容许其他事务来更新该数据,但可以进行读取操作

  2、ReadCommitted

    表示:提交读。当事务A更新数据时,不容许其他事务进行任何的操作包括读取,但事务A读取时,其他事务可以进行读取、更新

  3、RepeatableRead

    表示:重复读。当事务A更新数据时,不容许其他事务进行任何的操作,但是当事务A进行读取的时候,其他事务只能读取,不能更新

  4、Serializable

    表示:序列化。最严格的隔离级别,当然并发性也是最差的,事务必须依次进行。

读取现象

通过一些现象,可以反映出隔离级别的效果。这些现象有:

  • 更新丢失(lost update):当系统允许两个事务同时更新同一数据时,发生更新丢失。
  • 脏读(dirty read):当一个事务读取另一个事务尚未提交的修改时,产生脏读。
  • 不重复读(nonrepeatable read):同一查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生非重复读。(A transaction rereads data it has previously read and finds that another committed transaction has modified or deleted the data.  )
  • 幻读(phantom read):同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻像读。(A transaction reexecutes a query returning a set of rows that satisfies a search condition and finds that another committed transaction has inserted additional rows that satisfy the condition.  )

隔离级别与读取现象

隔离级别 脏读   Dirty Read  不可重复读取  NonRepeatable Read  幻读 Phantom Read 
未授权读取/未提交读   read uncommitted 可能发生 可能发生 可能发生
授权读取/提交读          read committed - 可能发生 可能发生
重复读                         read repeatable - - 可能发生
序列化                        serializable         - - -

常见数据库的默认级别

数据库 默认隔离级别
Oracle read committed
SqlServer read committed
MySQL(InnoDB) Read-Repeatable

事务隔离级别(IsolationLevel)相关推荐

  1. 事务隔离级别IsolationLevel

    共享锁S,加锁后,其它事务只能叠加S:独占锁X,加锁后具有排它性,其它事务加不了锁. ① ReadUnCommitted 不加锁,也不接受独占锁,在这个事务隔离级别下可以读到脏数据(未被提交的过期数据 ...

  2. 二十七、事务隔离级别示例

    1.设置服务器缺省隔离级别 通过修改配置文件设置 可以在my.ini文件中使用transaction-isolation选项来设置服务器的缺省事务隔离级别. 该选项值可以是: READ-UNCOMMI ...

  3. Java面试题之Oracle 支持哪三种事务隔离级别

    Oracle 支持三种事务隔离级别: 1.读已提交:(默认) 2.串行化: 3.只读模式 转载于:https://www.cnblogs.com/hujinshui/p/10463883.html

  4. mysql 事务隔离规范_MySQL事务隔离级别以及脏读、幻读、不可重复读示例

    事务的隔离性 MySQL是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session).每个客户端都可以在自己的 ...

  5. SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)

    五.锁与事务隔离级别 事务隔离级别简单的说,就是当激活事务时,控制事务内因SQL语句产生的锁定需要保留多入,影响范围多大,以防止多人访问时,在事务内发生数据查询的错误.设置事务隔离级别将影响整条连接. ...

  6. 关于MySQL的四种事务隔离级别!

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不 ...

  7. pb设置Oracle事务的隔离级别,Oracle的事务隔离级别

    ANSI/ISO SQL规定了四种事务隔离级别,分别是:read uncommitted,read committed,repeatable read,serializable ORACE提供了SQ9 ...

  8. SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因...

    原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...

  9. mysql选什么隔离级别_互联网项目中mysql应该选什么事务隔离级别

    摘要 企业千万家,靠谱没几家. 社招选错家,亲人两行泪. 祝大家金三银四跳槽顺利! 引言 开始我们的内容,相信大家一定遇到过下面的一个面试场景 面试官:"讲讲mysql有几个事务隔离级别?& ...

最新文章

  1. BufferedInputStream的read方法原理
  2. 面向对象——多态,抽象类,接口(二)
  3. lombok pom.xml依赖
  4. boot jndi数据源 spring_spring boot多数据源配置(mysql,redis,mongodb)实战
  5. TypeError: the JSON object must be str, bytes or bytearray, not NoneType
  6. 2017-2018-1 20155227 《信息安全系统设计基础》第十三周学习总结
  7. 快速排序-超级详细代码注释!
  8. mysql win7 zip_win7 下zip版mysql安装
  9. 麦克斯韦电磁场理论基础
  10. 公达 TP-POS58G 打印机驱动
  11. uva 473 - Raucous Rockers(dp)
  12. 01电子记账本-微信小程序
  13. 如何分析软件安全性需求
  14. SSM项目使用ConfigTools对数据库的密码进行加密
  15. 如何选择SAP培训?
  16. tukey是什么意思_turkey中文是什么意思怎么读(英语里这个TURKEY这个多义词解析)...
  17. protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
  18. 谨慎使用rm -rf
  19. linux pci 扩展usb,PCI USB卡 USB2.0卡 PCI扩展卡 PCI转4USB口 VIA转换卡USB扩展卡
  20. 基于java springboot兼职小程序源码(毕设)

热门文章

  1. ajax大数据导入的一系列问题处理
  2. Android 核心分析之十二Android GEWS窗口管理之基本架构原理
  3. 深入理解JDBC的超时设置 转
  4. Delphi中如何将一个extended型等实数强制转换为integer型
  5. C# 发送邮件的记录(qq,126,Gmail)
  6. Android 电视 文件目录,通用的安卓智能电视截屏及图片目录文件获取方法
  7. jquery ajax传值php,jquery ajax传值问题
  8. springboot banner在线生成_SpringBoot系列教程10--小花样之SpringBoot配置自定义Banner
  9. python选择语句_3.1Python的判断选择语句
  10. burpsuite下载使用详讲