`

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

 

分享到:
评论

相关推荐

    oracle事务控制机制研究.pdf

    Oracle提供不同级别的事务隔离级别,如读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。 4. **持久性 (Durability)**:一旦事务提交,对数据库...

    Oracle事务与锁定

    Oracle事务与锁定是数据库管理系统中的核心概念,它们对于确保数据的完整性和一致性至关重要。事务是数据库操作的基本单元,它封装了一系列的数据库操作,确保这些操作要么全部成功,要么全部失败,从而保持数据库的...

    oracle 事务 回滚 存储过程

    本文将深入探讨“Oracle事务回滚存储过程”这一主题,旨在理解其核心概念、工作原理以及实际应用。 ### Oracle事务 在数据库操作中,事务是一系列操作的集合,这些操作要么全部成功,要么全部失败。事务具有ACID...

    oracle隔离机制

    Oracle隔离机制是数据库管理系统中确保事务之间相互独立和数据一致性的关键特性。它涉及到如何处理并发事务中的数据读取和修改,以防止出现脏读、不可重复读和幻读等并发问题。在Oracle中,提供了三种不同的隔离级别...

    oracle事务1.ppt

    Oracle事务控制还提供了回退段机制,通过回退段机制,可以确保事务的原子性和隔离性。系统利用回退段来确保诸如读一致性、数据库恢复等。 Oracle事务控制是数据库管理系统中最重要的部分之一,它确保了数据库的一致...

    oracle隔离级别

    2. **提交读(Read Committed)**:Oracle默认的事务隔离级别,它确保一个事务不会读取到其他事务未提交的修改,从而避免了脏读。然而,由于只保证语句级别的读一致性,非重复读和幻像读仍然可能发生。 3. **重复读...

    oracle 在java中的事务处理和异常回滚。

    Oracle数据库还支持更复杂的事务隔离级别,如读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)。不同的隔离级别可以防止脏读、不可重复读和幻读等...

    oracle事务.ppt

    Oracle事务管理 Oracle事务是指一组数据库命令,构成单一逻辑工作单元的操作集合。事务是访问并可能更新各种数据项的一个程序执行单元,是不可分割的工作逻辑单元。执行并发操作的最小控制单位。 事务的特性包括...

    ORACLE的隔离级别

    在Oracle中,这是默认的事务隔离级别。这意味着每个SQL语句都会看到事务开始时已经提交的数据,但后续的修改可能会在不同的语句中出现,导致不一致的视图。 重复读级别防止了脏读和非重复读,但在这种隔离级别下,...

    oracle 事务

    Oracle提供了四种事务隔离级别:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE),以平衡并发性能和数据一致性。 4. **持久性(Durability)**:...

    spring常用数据库事务传播属性和事务隔离级别1

    Spring 框架提供了一套完善的事务管理机制,其中包含了多种事务传播属性和事务隔离级别。这些特性使得在处理数据库操作时,能够更好地控制事务的边界和行为,从而确保数据的一致性和完整性。 首先,我们来看一下...

    ORACLE数据库事务隔离级别介绍

    Oracle数据库的事务隔离级别是确保数据一致性的重要机制,它决定了在一个事务执行期间,与其他并行事务的交互方式。事务隔离级别主要解决并发操作时可能出现的三个问题:幻读(Phantom Read)、不可重复读(Non-...

    oracle事务完整流程分析

    Oracle通过使用一系列锁机制来避免并发事务中的数据冲突,并确保事务隔离。此外,Oracle的日志文件记录了所有对数据库所做的更改,这样即使在系统故障的情况下也能保证数据的持久性,因为可以通过日志文件将数据库...

    oracle 数据库隔离级别学习

    总结来说,Oracle 数据库提供了多种事务隔离级别,以适应不同的并发需求和数据一致性保证。理解并正确选择隔离级别对于优化并发性能和维护数据完整性至关重要。开发和数据库管理员需要根据业务场景和性能需求来选择...

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

    理解事务隔离级别和锁机制对于优化数据库性能和保证数据一致性至关重要。根据具体应用场景选择合适的隔离级别,并合理利用锁机制,可以在保障数据安全的同时,提高系统的并发处理能力。在MSSQL和Oracle这样的大型...

    在oracle中使用事务

    在Oracle数据库中,事务处理是确保数据完整性和一致性的重要机制。事务可以被看作是一系列操作的集合,这些操作作为一个整体被执行,要么全部成功,要么全部失败。这遵循了ACID(原子性、一致性、隔离性、持久性)...

    oracle事务.pptx

    总结来说,Oracle事务是确保数据库操作正确性和一致性的基础,通过理解事务的特性、并发处理中的问题以及如何通过COMMIT和ROLLBACK进行控制,能够有效地维护数据库的稳定性和数据的准确性。在实际的数据库管理中,...

    ORACLE-事务ORACLE-TRANSACTION-信息管理与信息系统本科毕业设计.doc

    ORACLE 事务管理是数据库管理系统中的一种机制,旨在确保数据库的一致性和完整性。在 ORACLE 中,事务是指一系列操作的集合,这些操作作为一个单元来执行,以确保数据库的一致性和完整性。 ORACLE 事务的特征 ...

Global site tag (gtag.js) - Google Analytics