zoukankan      html  css  js  c++  java
  • Oracle 6

    并发带来的问题

    1.脏读dirty read

    脏读的问题是transaction读到了没有被提交的数据。例如,T1更新了data1,还没提交,这时T2读取了更新后的data1, 用于计算和更新别的值, 然后T1又回滚了data1。


    如果是隔离级别是read commited, 那么T1就会对data1加exclusive lock, T2要等待T1释放锁才能读取到,就避免了脏读。

    2. 不可重复读 nonrepeatable read,

    不可重复读就是, transaction每次读一行都会得到不同的值。例如, T1读了一行数据data1, 这时T2更新或删除了data1,并提交,T1再次读取data1,就会发现data1值变了。

    3. 幻读 Phantoms,

    T1在查询某些数据,这时T2插入一些符合T1查询条件的数据,T1再次查询就会得到不同的结果。 这就是幻读。

    ANSI/ISO SQL定义了4种隔离级别,请看下表中这些隔离级别和以上问题的关系

    Isolation Level Dirty Read Nonrepeatable Read Phantom Read
    READ UNCOMMITTED Permitted Permitted Permitted
    READ COMMITTED -- Permitted Permitted
    REPEATABLE READ -- -- Permitted
    SERIALIZABLE -- -- --

    可见,

    READ UNCOMMITED时, 问题1,2,3都有可能发生。

    READ COMMITED时, 消除了脏读问题

    REPEATABLE READ时,消除了不可重复读问题

    SERIALIZABLE时,消除了幻读。

  • 相关阅读:
    Novell 被收购
    NetBeans IDE 7.0 Beta 发布
    关于去除PE文件中函数修饰的做法
    甲骨文宣布将于明年 7 月 28 日推 JDK 7
    PE文件格式的一些研究
    如何开发 Web 应用程序
    Novell 被收购
    如何开发 Web 应用程序
    分享:DFC开发平台的设计理念
    分享:FireBreath 1.7.0 RC1 发布
  • 原文地址:https://www.cnblogs.com/xzpp/p/3409272.html
Copyright © 2011-2022 走看看