zoukankan      html  css  js  c++  java
  • 事务的隔离级别

    事务隔离级别

          ANSI/ISO SQL标准定义了4种事务隔离级别,对于相同的事务,采用不同的隔离级别分别有不同的结果。也就是说,即使输入相同,而且采用同样的方式来完成同样的工作,也可能得到完全不同的答案,这取决于事务的隔离级别。这些隔离级别是根据3个“现象”定义的,以下就是给定隔离级别可能允许或不允许的3种现象:

       a)脏读(dirty read):你能读取未提交的数据,也就是脏数据。只要打开别人正在读写的一个OS文件(不论文件中有什么数据),就可以达到脏读的效果。如果允许脏读,将影响数据完整性,另外外键约束会遭到破坏,而且会忽略惟一性约束。

       b)不可重复读(nonrepeatable read):这意味着,http://www.linuxidc.com 如果你在T1时间读取某一行,在T2时间重新读取这一行时,这一行可能已经有所修改。也许它已经消失,有可能被更新了,等等。

    这里的修改是已经提交了的,与脏读不同。

       c)幻像读(phantom read):这说明,如果你在T1时间执行一个查询,而在T2时间再执行这个查询,此时可能已经向数据库中增加了另外的行,这会影响你的结果。与不可重复读的区别在于:在幻像读中,已经读取的数据不会改变,只是与以前相比,会有更多的数据满足你的查询条件。

          SQL隔离级别是根据这些现象来描述级别的,并没有强制采用某种特定的锁定机制或硬性规定的特定行为,这就允许多种不同的锁定/并发机制存在。

                                    表1   ANSI隔离级别
                   隔离级别                   脏读   不可重复读   幻像读
            READ UNCOMMITTED     允许    允许           允许
            READ COMMITTED                   允许           允许
            REPEATABLE READ                                    允许
            SERIALIZABLE

  • 相关阅读:
    eclipse- DDMS截图功能使用
    宏-新项目物理按键不能用
    宏-宏的添加跟代码中的使用
    SQlite-数据库的访问实例(转)
    git 工具的使用总结(6)-提交合并处理
    git 工具的使用总结(5)-查看历史记录
    git -处理分支合并
    Linux查询网址
    SQLite常用网址
    Java查询网址
  • 原文地址:https://www.cnblogs.com/malaikuangren/p/2435422.html
Copyright © 2011-2022 走看看