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

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

      我们先看下事务不做隔离会产生的问题:

    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还有一种叫只读的隔离级别,就是说该事务只支持读取,而不能增删改。

  • 相关阅读:
    关于导出数据库提示 outfile disabled的解决方案
    mysql的日志管理
    Node.js aitaotu图片批量下载Node.js爬虫1.00版
    Node.js umei图片批量下载Node.js爬虫1.00
    Node.js abaike图片批量下载Node.js爬虫1.01版
    JS 数字左补零函数
    Node.js 向一个文件添加内容
    JS 取得当前日期时间(文本形式)
    Node.js abaike图片批量下载Node.js爬虫1.00版
    Node.js nvshens图片批量下载爬虫 1.00
  • 原文地址:https://www.cnblogs.com/wuxun1997/p/6417917.html
Copyright © 2011-2022 走看看