精通Oracl核心技术和项目实战之事务和锁.pptVIP

精通Oracl核心技术和项目实战之事务和锁.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第18章 事务和锁 事务和锁是两个联系非常紧密的概念。事务很重要,可以保证多用户并发系统中的数据的完整性。在数据库中,存在多个用户同时对某一数据进行读写操作的情况,为了确保数据的并行性和一致性,可以使用事务。锁是Oracle数据库引擎用来同步多个用户,同时对同一个数据块访问的一种机制。锁可以消除多用户操作同一个资源产生的隐患。本章重点讨论有关事务和锁的概念。 18.1 什么是事务 事务(transaction)在数据库中主要用于保证数据的一致性,防止出现错误数据。在数据库中数据的完整性是一个广义概念,它包括数据的并行性和一致性。事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据修改均会提交,称为数据库中的永久组成部分;如果事务遇到错误且必须取消或回滚,则所有的数据均会被清除。 18.1.1 事务概述 事务(transaction)是用户定义的一个数据库操作序列,是一个不可分割的整体。这些操作要么全做,要么全不做。事务是对数据库进行操作的最基本的逻辑单位,它可以是一组SQL语句或整个程序。通常情况下,一个应用程序里包含多个事务。此外,事务还是恢复和并发控制的基本单位。 18.1.1 事务概述 事务和程序不同,一条语句或者多条语句甚至一段程序都可能在一个事务中,而一段程序又可以包含多个事务。事务可以根据自己的需要把一段程序分成多个组,然后把每个组都当成一个单元,而这个单元就可以理解为一个事务。 18.1.1 事务概述 事务在没有提交之前可以回滚,而且在提交前,当前用户可以查看已经修改的数据,但其他用户看不到该数据,一旦事务提交就不能再撤销修改了。Oracle数据库的事务基本控制语句有如下几种: set transaction,设置事务的属性。 commit,提交事务。 savepoint,设置保存点。 rollback,回滚事务。 rollback to savepoint,回滚至保存点。 18.1.2 事务的ACID特性 事务有4个特性,分别是原子性(Atomic)、一致性(Consistent)、分离性(Isolated)、持久性(Durable)。 18.1.2 事务的ACID特性 1.原子性 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。下面通过一个例子来加深读者对该特性的理解。 18.1.2 事务的ACID特性 2.一致性 事务必须使数据库从一个一致性状态变换到另一个一致性状态。因此,当数据库中只包含了成功事务提交的结果时,就说数据库处于一致性状态。 18.1.2 事务的ACID特性 3.分离性 即使每个事务都能确保一致性和原子性,但如果有几个事务并发执行,如果在执行的过程中发生了事务间的交叉,也会导致数据库发生不一致的情况。事务的分离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 18.1.2 事务的ACID特性 4.持久性 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。 18.1.3 事务类型 在Oracle数据库中,操作事务可分为两种方式:显示操作方式和隐示管理方式。 1.显示操作方式 显式操作方式是对事务的提交或回滚,需要用户利用脚本来完成。相关脚本如图所示。 18.1.3 事务类型 2.隐示管理方式 隐示管理方式没有明确的开始和结束标志,它同样由数据库自动开启。当一个程序正常结束或执行DDL语句时会自动提交,例如create table语句。而操作失败时就会自动回退,这些都是被动完成的,不需要开发者的参与。 18.1.3 事务类型 利用语句可以设置事务是否自动提交,如图所示。 18.1.4 事务的状态 对数据库进行操作的各种事务共有5中状态,如图所示。 18.1.4 事务的状态 提交状态和中止状态的事务统称为已决事务,处于活动状态、部分提交状态和失败状态的事务称为未决事务。 (1)活动状态:事务在执行的状态叫活动状态。 (2)部分提交状态:事务中随后一条语句被执行后的状态叫部分提交状态。 (3)失败状态:事务不能正常执行的状态叫失败状态。导致失败状态发生的可能原因有硬件原因或逻辑错误,这样事务必须回滚,就进入了中止状态。 (4)提交状态:事务在部分提交后,将往硬盘上写入数据,最后一条信息写入后的状态叫提交状态。进入提交状态的事务就成功完成了。 (5)中止状态:事务回滚,并且数据库已经回复到事务开始执行前的状态叫中止状态。 18.1.5 提交事务 当事务提交成功时,就意味着事务中的数据被永久地提交到了数据库中,其他用户也可以查看提交的数据。 【示例18-1】对表cus

文档评论(0)

181****2553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档