`
liwenshui322
  • 浏览: 519260 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle如何保证事务的ACID原则--oracle核心技术读书笔记二

阅读更多

在事务中有四个通用的原则是所有数据库都必须遵守的,简称ACID原则,下面简单概述一下oracle是怎样实现这四个原则的。

 

         一. 原子性(Atomicity):一个事务要么全部执行,要么全部都不执行

         在oracle中,当我们做一次变更的时候,系统会自动创建一条undo记录来描述怎样撤销这次变更。也就是说,当执行到一个事务的中间时,如果有其他用户想访问我们更改过的数据,他必须使用undo记录来查看变更前的旧数据,即只有当我们提交这个事务后,所做的更改才能被他人看到。这样就可以确保,其他用户要么能看到我们所做的更改,要么什么更改都看不到。另外一种情况,如果我们这个事务失败,我们也可以根据undo里面的信息将我们所做的修改回退。保证要么全部成功,要么全部失败。

 

         二.  一致性(Consistency):一个事务的运行并不改变数据库中数据的一致性

          假设一个事务需要进行3种更新操作,某一时刻执行成功了2种更新操作。这个时候数据库中的数据不是一致性的状态,因为还有第三种更新操作没有执行。假如这个时候,别人看到了我们执行成功的2种更新操作后的结果,那就破坏了数据的一致性。oracle中由于undo的存在,其他用户无法看到事务的增量应用(也就是执行成功的2种更新操作),也就是无法看到这个不合法的临时状态。他们要么看到老状态,要么看到新状态,没有中间态。

 

         三.  独立性(Isolation): 一个事务不能看到另一个没有提交的事务的执行结果

         从第一点就可以看出,oracle通过undo能保证其他用户看不到我们事务所做的修改,在我们提交之前。其他事务只能从undo里面去寻找以前旧版本的数据,而非我们事务改变了的新数据。

 

         四.  持久性(Durability): 一旦事务成功,数据的修改是永久的 

          该原则突出了oracle重做日志的优势。在oracle中,事务一旦提交,oracle就会将重做日志顺序地写入到重做日志文件。而不是去磁盘持久化我们这个事务所做的修改。比如,一个事务修改了100条数据,假设这100条数据是随机在磁盘的不同地方,那一旦事务提交,我们就得花费大量时间去磁盘寻找我们需要修改的数据,并将其修改。oracle没有这样做。oracle只是自己生成一系列重做日志(描述数据的修改),然后顺序写入磁盘的重做日志文件,写入成功即代表着这个事务提交成功,即使修改还没有真正持久化到磁盘。假设这个时候突然断电,磁盘的数据还没有修改为正确的数据,但是事务已经成功了,怎么办呢。oracle在下次启动的时候会自动读取重做日志文件,将没有持久化到磁盘的修改,再做一遍,将修改持久化到数据库,从而保证提交的事务,数据的修改是永远的。

0
2
分享到:
评论

相关推荐

    oracle核心技术读书笔记一附件1

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其核心技术涉及数据存储、查询优化、并发控制、事务处理等多个方面。这篇读书笔记主要涵盖了Oracle数据库的一些核心概念和关键特性。 一、Oracle数据...

    涂抹Oracle—三思笔记之一步一步学Oracle

    《涂抹Oracle—三思笔记之一步一步学Oracle》是一本深入浅出的Oracle学习指南,旨在帮助读者全面理解和掌握Oracle数据库系统。这本书以中文为语言,提供了详尽的Oracle知识讲解,适合初学者以及有一定基础的数据库...

    MLDN最经典的ORACLE笔记

    事务管理是数据库操作的核心,Oracle提供了ACID(原子性、一致性、隔离性和持久性)特性来保证数据的完整性和一致性。此外,Oracle的备份与恢复机制,如RMAN(恢复管理器)和数据泵,对于数据安全和业务连续性至关...

    Oracle数据库笔记-JackChiang.docx

    1. **Oracle数据库基础**:Oracle数据库采用SQL(结构化查询语言)进行数据操作,支持ACID(原子性、一致性、隔离性和持久性)特性,保证了事务处理的可靠性。它包括表、视图、索引、存储过程、触发器等数据库对象。...

    韩顺平oracle视频笔记

    ### 韩顺平Oracle视频笔记知识点概览 #### 1. Oracle 用户管理 - **概念**:在Oracle数据库中,用户是用来管理访问权限的基本单位。每个用户都可以有自己的模式(schema),其中包含各种对象如表、视图等。 - **创建...

    Oracle11gOCP-051干货笔记

    - **事务和锁**:理解事务的ACID特性,以及锁定机制,用于并发控制。 - **索引**:提高查询性能的关键,有B树、位图等多种类型。 - **约束**:包括NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY,用于数据完整性。 - ...

    韩顺平oracle视频笔记四(事务)

    【标题】:“韩顺平oracle视频笔记四(事务)”主要涵盖了Oracle数据库系统中的事务管理这一核心主题。在Oracle数据库中,事务是数据库操作的基本单位,它确保了数据的一致性和完整性。本视频笔记可能详细讲解了事务...

    Oracle笔记(基于尚学堂马士兵)

    【Oracle笔记(基于尚学堂马士兵)...通过学习《Oracle笔记(基于尚学堂马士兵)》,读者将能够全面了解Oracle数据库,掌握其核心功能,并具备实际操作和问题解决能力。这份笔记是初学者入门和专业人士进阶的良好参考资料。

    Oracle_DBA_java.rar_oracle_oracle 笔记

    - 事务管理:理解ACID属性,使用Java的try-catch-finally块和Transaction API控制事务边界。 - 性能监控:通过Java的JMX(Java Management Extensions)监控数据库连接池和SQL执行情况。 综上所述,Oracle DBA和...

    MSDN oracle学习笔记

    此外,事务管理,包括ACID(原子性、一致性、隔离性和持久性)属性,也是学习的重点。 数据库性能优化是另一个重要主题。笔记可能会涵盖索引策略,查询优化器的工作原理,以及如何使用 Explain Plan 分析查询执行...

    oracle 学习笔记

    2. 事务的ACID特性包括原子性、一致性、隔离性和持久性。 3. 事务的隔离级别用于定义事务并发执行时的可见性规则。 4. 数据库开发中事务管理是一个关键挑战。 5. 锁是事务并发控制机制的一部分。 6. Oracle数据库的...

    oracle 全套笔记

    "Oracle全套笔记"涵盖了从基础安装到高级操作的全面学习材料,由李兴华老师授课,这些笔记将帮助我们深入理解Oracle数据库的核心概念和技术。 101_Oracle安装及常用命令.pdf: 这部分笔记主要讲解了如何在不同的操作...

    个人学习oracle笔记

    这个“个人学习Oracle笔记”文件很可能是作者在深入学习Oracle数据库的过程中积累的知识点总结,旨在帮助初学者从基础开始逐步掌握Oracle的核心概念和技术。 Oracle数据库的基础知识包括以下几个主要方面: 1. **...

    达内-ORACLE学习笔记

    - **事务**:一组操作的集合,确保数据的一致性和完整性,支持ACID属性。 - **伪列**:ROWID和ROWNUM,用于标识行的位置和编号,但并不实际存储在表中。 ### 序列、视图与索引 - **序列(SEQUENCE)**:自动产生...

    李兴华--J2EE核心框架 笔记

    《李兴华--J2EE核心框架 笔记》是一份深入探讨J2EE核心技术的珍贵资料,由知名讲师李兴华倾力打造。这份笔记集合了他在教学过程中的精华内容,旨在帮助学习者全面理解和掌握J2EE开发的关键概念和技术。 首先,J2EE...

    Oracle笔记

    Oracle笔记是针对数据库管理系统Oracle的一份综合学习资料,旨在帮助用户深入理解和掌握Oracle的核心概念、功能以及在实际工作中的应用。这份笔记包含了丰富的知识点,既适用于初学者进行系统学习,也适合作为专业...

    oracle最全学习笔记(个人总结)

    ### Oracle 最全学习笔记知识点梳理 #### 一、存储过程 - **定义**:存储过程是一种在...通过以上内容的学习和理解,可以帮助我们更好地掌握Oracle数据库的核心技术和最佳实践,进一步提高数据库应用的性能和稳定性。

    oracle 韩顺平笔记 传智播客

    ### Oracle韩顺平笔记知识点概览 #### 第一章:Oracle基础介绍 ##### 第一节:Oracle的安装和启动 1. **数据库分类与选择**:数据库根据负载量、成本和安全需求分为小型(如Access、Foxbase)、中型(如MySQL、...

    Oracle 笔记.pdf

    这份"Oracle笔记.pdf"涵盖了Oracle数据库系统的核心概念、安装配置、管理操作、SQL查询语言、性能优化以及故障排查等多个方面的知识。以下是对这些主题的详细解释: 1. **Oracle数据库核心概念**: - 数据库架构:...

Global site tag (gtag.js) - Google Analytics