Oracle 支持的 2 种事务隔离级别 Read committed 和 Serializable
根據官方資料,它們的區別如下:
动作 Read Committed Serializable
Dirty write Not possible Not possible
Dirty read Not possible Not possible
Nonrepeatable read Possible Not possible
Phantoms Possible Not possible
Read committed 是默认的隔离级别。
对于Read committed ,事务中的查询只能看到在此查询之前( 而非事务开始之前 )提交的数据。 由于 oracle 不会因为查询数据而阻止另外一个事务修改数据,因此数据可以在一个事务中的 2 次查询中,查到不同的结果。因此 可能出现 nonrepeatable read and phantoms 的情况
对于serializable transactions ,当2次执行同一条查询语句的时候(就是两次执行查询,就是说执行完第一个 .executeQuery ,然后执行第二个 .executeQuery ),如果在第一个 .executeQuery 开始执行而另外一个事务已经开始修改数据,并且已经提交,那么两次读取的数据是另外一个事务修改前的数据。如果在第一个 .executeQuery 之前,另外一个事务修改了数据,那么两次读取的数据是另外一个事务修改后的数据。
这恰恰反映了, repeatable read ,两次结果一致
这与 Read committed 完全不同, 要是 Read committed ,第一个 .executeQuery 未执行完第二事务,而在第二个 .executeQuery 前第二个事务执行完毕,那么第一个 .executeQuery 得到的是初始数据,而第二个 .executeQuery 得到的是修改后的数据
恰恰说明了 nonrepeatable read ,两次结果不一致的情况
分享到:
相关推荐
介绍数据库事务的四种隔离级别,比较不同隔离级别的区别和影响
隔离级别定义了事务与事务之间的隔离程度。隔离级别定义了事务与事务之间的隔离程度。
oracle 事务隔离级别 事务不同引发的状况: 脏读(Dirty reads) 一个事务读取另一个事务尚未提交的修改时,产生脏读 很多数据库允许脏读以避免排它锁的竞争。 不可重复读(Nonrepeatable reads) 同一查询在同一事务中...
数据库事务和隔离级别
浅谈ORACLE数据库的性能优化.pdf
浅谈Oracle优化排序的操作,ORACLE 参数调整影响
事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度
浅谈Oracle常见错误处理,Oracle公司工程师列举的常见错误及处理方法。
数据库事务的四种隔离级别的特点描述,他们的使用热度,以及各种锁在隔离级别下的释放时机。
浅谈ORACLE数据库RAC集群备份.pdf
oracle并发和数据一致性的相关内容,针对数据库支持的4种隔离级别的说明
浅谈Oracle数据库表的设计技巧.pdf
Oracle事务与锁定Oracle事务与锁定Oracle事务与锁定
浅谈ORACLE数据库管理.pdf
浅谈ORACLE数据库调优.pdf
浅谈Oracle数据库中Merge Into的用法.pdf
浅谈Oracle数据库安全策略.pdf
浅谈Oracle的商务智能.pdf