首页 > 数据库技术 > 详细

Oracle事务的隔离

时间:2017-02-20 01:00:55      阅读:324      评论:0      收藏:0      [点我收藏+]

      事务是指一些列操作的集合,它有4个属性:原子性(Automacity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),这4个属性简称为ACID。原子性指事务是一个整体的工作单元,要么全部执行,要么全部取消;一致性指事务操作完成时,必须使所有数据保持一致状态,事务执行成功则所有数据更新为一个新的状态,失败则保持原来执行前的状态;隔离性指事务在并发情况下,事务之间不会相互影响,一个事务的修改不会让另一个事务查看到它数据的中间状态;持久性是说事务提交后,对数据的修改就永久保存到数据库中了。

      其中Oracle的隔离有两种状态,我们先看下事务不做隔离会产生的问题:

1、幻读:对插入而言的。事务1查询某张表,事务2往表里插入数据,事务1重新查询,把事务2插入的数据查出来了。

2、不可重复读:对修改或删除而言的。同上,事务1查询某张表的某条记录,事务2修改或删除该记录,事务1重新查询,发现数据变了或没了。

3、脏读:对未提交回滚操作而言的。事务1修改了某张表的某条记录,事务2查询后事务1回滚了,事务2读取了不存在的数据。

      ANSI/ISO SQL92 标准中定义了四个隔离级别,在各隔离级别中,允许发生上述三种需要阻止的现象中的一种或多种:

1、读取未提交数据(read uncommitted)

2、读取已提交数据(read committed)

3、可重现的读取(repeatable read)

4、序列化(serializable)

      通过指定不同的隔离级别,可避免上述一种或多种并发问题,见下图。

技术分享

      Oracle的隔离别只支持上面的2和4,1和3是不支持的。因为不支持1,所以想要脏读都没可能;而不支持3,要想避免不可重复读,可以直接使用4。

 

Oracle事务的隔离

原文:http://www.cnblogs.com/wuxun1997/p/6417917.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!