zoukankan      html  css  js  c++  java
  • Oracle数据库事务隔离级别

    事务隔离级别:一个事务对数据库的修改与并行的另一个事务的隔离程度。

    两个并发事务同时访问数据库表相同的行时,可能存在以下三个问题:

    1、幻想读:事务T1读取一条指定where条件的语句,返回结果集。此时事务T2插入一行新记录,恰好满足T1的where条件。然后T1使用相同的条件再次查询,结果集中可以看到T2插入的记录,这条新纪录就是幻想。

    2、不可重复读取:事务T1读取一行记录,紧接着事务T2修改了T1刚刚读取的记录,然后T1再次查询,发现与第一次读取的记录不同,这称为不可重复读。

    3、脏读:事务T1更新了一行记录,还未提交所做的修改,这个T2读取了更新后的数据,然后T1执行回滚操作,取消刚才的修改,所以T2所读取的行就无效,也就是脏数据。

    为了处理这些问题,SQL标准定义了以下几种事务隔离级别

    READ UNCOMMITTED 幻想读、不可重复读和脏读都允许。

    READ COMMITTED 允许幻想读、不可重复读,不允许脏读

    REPEATABLE READ 允许幻想读,不允许不可重复读和脏读

    SERIALIZABLE 幻想读、不可重复读和脏读都不允许

    Oracle数据库支持READ COMMITTED 和 SERIALIZABLE这两种事务隔离级别。所以Oracle不支持脏读

    SQL标准所定义的默认事务隔离级别是SERIALIZABLE,但是Oracle 默认使用的是READ COMMITTED

    设置隔离级别使用 SET TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]

  • 相关阅读:
    站立会议第八天
    Servlet基础知识
    JSP基础知识
    JSP基础知识
    JDBC工具包
    JDBC
    MySQL
    ASP.NET程序代码优化的七个方面
    中小型软件项目开发一般流程建议
    理解九种图
  • 原文地址:https://www.cnblogs.com/jiaqingshareing/p/8479906.html
Copyright © 2011-2022 走看看