事物隔离级别

概念:隔离级别定义了事物与事物之间的隔离程度。

ANSI/ISO SQL92标准定义了一些数据库操作的隔离级别(这是国际标准化组织定义的一个标准而已,不同的数据库在实现时有所不同):

隔离级别

脏读

不可重复读

幻读

读未提交(Read uncommitted)

读已提交(Read committed)

×

可重复读(Repeatable read)

×

×

可串行化(Serializable)

×

×

×

 

                     √ 可能出现    ×不会出现

脏读(dirty read):当一个事物读取另个一事物尚未提交的修改时,产生脏读。在oracle中,没有脏读。

不可重复读(nonrepeatable read):同一查询在同一事物中多次进行,由于其他提交事物所做的修改或删除,造成本事物每次返回不同的结果集,此时发生不可重复读。

幻读(phantom read):同一查询在同一事物中多次进行,由于其他提交事物所做的插入操作,造成本次事物每次返回不同的结果集,此时发生幻读。

Oracle的事物隔离级别

Oracle提供了SQL92标准中的read committed和serializable(串行化),同时提供了非SQL92标准的read-only

Oracle的read committed说明:

①这是ORACLE缺省的事物隔离级别。

②保证不会脏读;但可能出现非重复读和幻像。

Oracle的serializable说明:

①serializable就是是事物看起来象是一个接着一个地顺序地执行(从效果上可以这样理解)

②仅仅能看见在本事物开始前由其他事物提交的更改和在本事物中所做更改

③保证不会出现脏读、不可重复读和幻读

Serializableread-only的区别:

²  Serializable隔离级别提供了read-only事物所提供的读一致性(事物集的读一致性),同时又允许DML(update/insert/delete)操作

²  read only 只读事物,不允许DML操作。

Oracle的事物隔离级别设置

u  设置一个事物的隔离级别

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;(默认级别)

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;(需要手动设置)

SET TRANSACTION READ LONLY;

u  设置整个会话的隔离级别

Alter session set isllation_level serializable;

Alter session set isolation_level read committed;

Oracle的事物隔离级别在java程序中如何使用

connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

特别说明:

①java程序中Connection.XXXXX有五个,但不是所有的数据库对有对应的五个事物隔离级别实现。

②在实际工作中,我们极少去修改各个数据库默认的隔离级别。

说明:一般情况下,我们java程序员无需去设置

Oracle中事物处理--事物隔离级别的更多相关文章

  1. mysql 事物ACID和隔离级别

    ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则 ...

  2. (转)mysql、sqlserver、oracle的默认事务的隔离级别

    1.mysql的默认事务的隔离级别:可重复读取(repeatable read); 2.sqlserver的默认事务的隔离级别:提交读取(read committed); 3.oracle的默认事务的 ...

  3. MySQL学习【第十二篇事务中的锁与隔离级别】

    一.事务中的锁 1.啥是锁? 顾名思义,锁就是锁定的意思 2.锁的作用是什么? 在事务ACID的过程中,‘锁’和‘隔离级别’一起来实现‘I’隔离性的作用 3.锁的种类 共享锁:保证在多事务工作期间,数 ...

  4. MySQL事物(一)事务隔离级别和事物并发冲突

    数据库的操作通常为写和读,就是所说的CRUD:增加(Create).读取(Read).更新(Update)和删除(Delete).事务就是一件完整要做的事情.事务是恢复和并发控制的基本单位.事务必须始 ...

  5. 谈一谈对MySQL InnoDB的认识及数据库事物处理的隔离级别

    介绍: InnoDB引擎是MySQL数据库的一个重要的存储引擎,和其他存储引擎相比,InnoDB引擎的优点是支持兼容ACID的事务(类似于PostgreSQL),以及参数完整性(有外键)等.现在Inn ...

  6. mysql,oracle,sql server中的默认事务隔离级别查看,更改

    未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据) 已提交读(数据库引擎的默认级别) 可重复读 可序列化(隔离事务的最高级别,事务之间完全隔离) 可串行化比较严谨,级别高; MySQL m ...

  7. SQL Server中锁与事务隔离级别

    SQL Server中的锁分为两类: 共享锁 排它锁 锁的兼容性:事务间锁的相互影响称为锁的兼容性. 锁模式 是否可以持有排它锁 是否可以持有共享锁 已持有排它锁 否 否 已持有共享锁 否 是 SQL ...

  8. SQL Server中的事务与其隔离级别之脏读, 未提交读,不可重复读和幻读

    原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...

  9. 关于ORACLE的串行化隔离级别--来自ORACLE概念手册

    为了描述同时执行的多个事务如何实现数据一致性,数据库研究人员定义了被 称为串行化处理(serializability)的事务隔离模型(transaction  isolation model).当所有 ...

  10. SQL 标准中的四种隔离级别

    READ UNCOMMITED(未提交读) 在RERAD UNCOMMITED级别,事务中的修改,即使没有提交,对其他事务也都是可见的.事务可以读取未提交的数据,这也成为脏读(Dirty Read). ...

随机推荐

  1. Activiti实战01_认识Activiti

    什么是Activiti Activiti是为解决工作流而创建的一套流程引擎.举个最简单的例子,请假流程就是一个工作流,从开始到审批到结束,像流一样的贯穿整个流程.在工作中最常见的就是OA了.工作流总是 ...

  2. cookie中转注入

    用这个源码搭建网站找注入点http://192.168.226.129/shownews.asp?id=235 判断注入点,在后面加上'http://192.168.226.129/shownews. ...

  3. 利用GitHub来进行团队协作开发项目

    首先: 1.项目组长要在GitHub创建一个仓库 2.组长git clone仓库地址到本地   3.组长在本地克隆到的项目里面创建一个Django项目  4.在当前项目下进行git add以及git ...

  4. Hibernate-HQL-Criteria-查询优化

    1 查询总结 oid查询-get 对象属性导航查询 HQL Criteria 原生SQL 2 查询-HQL语法 2.1 基础语法 2.2 进阶语法 排序 条件 分页 聚合 投影 多表查询 SQL HQ ...

  5. mybatis学习:mybatis注解开发一对一的查询配置

    实体类: public class Account { private Integer id; private Integer uid; private Double money; private U ...

  6. Leetcode459.Repeated Substring Pattern重复的子字符串

    给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: 输入: "abab" 输出: True 解释 ...

  7. [转]深入理解ajax系列——响应编码

    我们接收到的 ajax 响应主体类型可以是多种形式的,包括字符串String.ArrayBuffer对象.二进制Blob对象.JSON对象.javascirpt文件及表示 XML文档的Document ...

  8. liunx定时删除文件(产生的日志.........)

    linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...

  9. Java是如何实现跨平台的

    一.Java是如何实现跨平台的 1.我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件 2.Java虚拟机JVM就是负责将字节码文件翻译成特定平台下的机器码然后运行.也就是说 ...

  10. 基于HHT和RBF神经网络的故障检测——第二篇论文读后感

    故障诊断主要包括三部分: 1.故障信号检测方法(定子电流信号检测 [ 定子电流幅值和电流频谱 ] ,振动信号检测,温度信号检测,磁通检测法,绝缘检测法,噪声检测法) 2.故障信号的处理方法,即故障特征 ...