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时,消除了幻读。

  • 相关阅读:
    贝塞尔曲线应用(贝塞尔插值)
    贝塞尔曲线原理(简单阐述)
    STL头文件有哪些及简单介绍
    句柄与MFC对象关系和相互获取
    Reflect
    Set 和 Map 数据结构
    Symbol
    对象的新增方法
    对象的扩展
    数组的扩展
  • 原文地址:https://www.cnblogs.com/xzpp/p/3409272.html
Copyright © 2011-2022 走看看