`

Oracle 事务隔离机制

阅读更多

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

 

两个并发事务同时访问数据库表相同的行时,这些问题可以归结为5类:

3类数据读问题(脏读、不可重复读和幻象读)
2类数据更新问题(第一类丢失更新和第二类丢失更新)。

 

 

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

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

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

4、第一类丢失更新 

A事务撤销时,把已经提交的B事务的更新数据覆盖了。这种错误可能造成很严重的问题,通过下面的账户取款转账就可以看出来: 

 

第二类丢失更新 

A事务覆盖B事务已经提交的数据,造成B事务所做操作丢失

 

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

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

 

事务隔离机制介绍:

http://blog.csdn.net/gaogaoshan/article/details/21158949

实例测试:

http://www.cnblogs.com/fxb248/archive/2012/01/06/2314696.html

但是,真实情况下并不会出现上文中所说的延迟,这是由于数据库的多版本并发控制MVVC(Multi-Version Concurrency Control).

mvvc的介绍:

http://m.2cto.com/database/201503/381708.html

 

Spring的事务隔离:

spring支持上面说的四种事务隔离机制,还有一个默认的,表示使用数据库默认的隔离机制。

具体可以参考spring相关书籍或者百度。

Spring的事务传播机制:规定了方法是否支持,以及怎么支持事务的。参考书籍或者百度。

下面文章中讲解了其中比较难区分的nested和required_new的区别。

http://m.blog.csdn.net/article/details?id=48185597

 

分享到:
评论

相关推荐

    MSSQL与Oracle数据库事务隔离级别与锁机制对比

    Isolation(隔离性): 事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正 确性和完整性。同时,并行事务的修改必须与其他并行事务的修改 相互独立。 Durability(持久性): 事务结束后,事务处理的...

    OracleDBA高可用、备份恢复与性能优化

    11.1.2 事务以及隔离级别 .. 21.1.3 支持并发的 lock机制 ... 31.1.4 支持并发的 latch机制 .. 61.1.5 Lock和 Latch的使用.... 71.2 RAC并发控 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    5.1.4 Oracle事务隔离级别 5.1.5锁管理器 5.2 RAC资源的协调和管理 5.2.1 Cache Fusion的结构 5.2.2 Cache Fusion工作原理 5.2.3 GES全局控制 5.3 RAC并发与一致性 5.3.1 DLM锁管理器 5.3.2多版本数据块 ...

    ORACLE锁机制深入理解

    加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当...

    Oracle数据库、SQL

    17.7 Oracle的锁机制 36 17.8事务不提交的后果 36 17.9回滚事务rollback 36 17.10保留点savepoint 36 十八、 数据库对象:视图view 37 18.1带子查询的create table 37 18.2带子查询的insert 37 18.3定义缺省值:...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    14.3 事务隔离级别 388 14.4 多版本读一致性 390 14.5 事务控制语句 391 14.5.1 Commit(提交) 391 14.5.2 Savepoint(保存点) 391 14.5.3 Rollback(回滚) 391 14.5.4 Set Transaction(设置事务) 391 14.5.5 ...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    7.2 事务隔离级别 230 7.2.1 READ UNCOMMITTED 232 7.2.2 READ COMMITTED 233 7.2.3 REPEATABLE READ 235 7.2.4 SERIALIZABLE 237 7.2.5 READ ONLY 239 7.3 多版本读一致性的含义 240 7.3.1 一种会失败的常用...

    Oracle编程艺术

    3.4.1 简要回顾文件系统机制..........................................................180 3.4.2 Oracle数据库中的存储层次体系..............................................181 3.4.3 字典管理和本地管理的表...

    DB2和 Oracle的并发控制(锁)的比较

    1 引言 在关系数据库(DB2,Oracle,Sybase,Informix和SQL Server)最小的恢复和交易单位为一个事务(Transactions),事务具有ACID(原子性,一致性,隔离性和永久性)特征。关系数据库为了确保并发用户在存取同一...

    神通数据库-数据库快速入门.pdf

    锁定机制,使事务相互隔离。 记录机制,保证事务的持久性。即使服务器硬件、操作系统或数据库自身出现故障,也可以在重新启动 时使用事务日志,将所有未完成的事务自动地回滚到系统出现故障的位置。 事务管理特性,...

    INFORMIX函数大全及相关资料

    INFORMIX的资料太难找了,自己整理了一些,包括: 1、INFORMIX函数大全.pdf...3、informix的事务、并发控制、锁机制、隔离级别.docx 4、oracle和informix的基础区别.docx 5、Shell脚本和Informix的交互实现技巧.docx

    深入理解PostgreSQL的MVCC并发处理方式

    Postgres通过一个叫做 多版本并发控制(MVCC) 的机制做到了这一点。这个技术并不是Postgres所特有的:还有好几种数据库都实现了不同形式的MVCC,包括 Oracle、Berkeley DB、CouchDB 等等 。当你使用PostgreSQL来设计...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    5.4 选择合适的事务隔离级别 168 5.4.1 事务的概念 168 5.4.2 事务的实现 169 5.4.3 事务隔离级别介绍 171 5.5 sql优化与合理利用索引 177 5.5.1 如何定位执行很慢的sql语句 177 5.5.2 sql优化案例分析 178 ...

    InnoDB中的MVCC

    不仅是MySQL,包括Oracle、 PostgreSQL等其他数据库系统也都实现了 MVCC,但各自的实现机制不尽相同,因为 MVCC没有一个统一的实现标准。 可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    柔性事务(TCC) 一致性原理 CAP BASE 中间件 数据库 mysql 存储引擎 索引 锁 oracle db2 缓存 redis 数据结构 持久 复制 cas 单线程 memcache eacache Tair 消息队列 jms Queue Topic ...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题54.Spring事务的传播特性和隔离级别 Java面试题55.ORM是什么?ORM框架是什么? Java面试题56.ibatis和hibernate有什么不同 Java面试题57.hibernate对象状态及其转换 Java面试题58:hibernate的缓存 Java...

    基于go、gorm、gin、mysql及layui构建的人力资源管理系统.zip

    提供员工管理、考试管理、薪资考勤管理、权限管理及分公司分库数据隔离等功能。 MySQL 是一款广受欢迎的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现隶属于美国甲骨文公司(Oracle)。自1998年...

    asp.net知识库

    事务隔离性的一些基础知识 在组件之间实现事务和异步提交事务(NET2.0) 其它 在.NET访问MySql数据库时的几点经验! 自动代码生成器 关于能自定义格式的、支持多语言的、支持多数据库的代码生成器的想法 发布Oracle...

Global site tag (gtag.js) - Google Analytics