版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 第十一章 事务与并发控制当用户建立与数据库的会话后,用户就可以对数据库的进展操作,而用户对数据库的操作是经过一个个事务来进展的。事务确保用户对数据库逻辑操作的完好性和一致性,这里的逻辑操作是指用户根据业务逻辑而进展的一系列操作。 Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 本章学习目的:p事务的概念,主要了解事务的ACID特性、处置过程。p在Oracle中设置事务的隔性层p事务处置语句p事务的并发控制p最根本锁的作用和运用p死锁的发
2、生p锁定的多粒度性pOracle中的多粒度意向锁 Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.1 了解事务 在引见Oracle 10g的事务处置之前,首先需求了解什么是数据库中的事务。事务其实是一个很简单的概念,用户每天都会遇到许多现实生活中类似事务的例如。例如,商业活动的中的买卖,对于任何一笔买卖来说,都涉及两个根本动作:一手交钱和一手交货。这两个动作构成了一个完好的商业买卖,缺一不可。也就是说,这两个动作都胜利发生,阐明买卖完成;假设只发生一个动作,那么买卖失败。所以,为了保证买卖可以正常完成,需求某种方法来保证这些操作的整
3、体性,即这些操作要么都胜利,要么都失败。 Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.2 事务的ACID特性一组SQL语句操作要成为事务,数据库管理系统必需保证这组操作的原子性Atomicity、一致性Consistency、隔离性Isolation和耐久性Durability,这就是事务的ACID特性。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.2.1 原子性(Atomicity)事务的原子性是指事务中包含的一切操作,要么全做,要么全不做;是一个最小和不可分割原
4、子的操作,以确保数据库的一致性。例如:用户SCOTT在同一个银行有A,B两个帐号,分别存有2000元和1000元,这时候SCOTT运用A帐号转账500元到B帐号,转账的时候先从A帐号扣掉500,A的帐号如今只需1500,B帐号在同一时辰只需1000元,这时候必需在B帐号添加500元,帐号数据才是正确的,假设在B帐号添加500元的操作的不胜利,那么必需在A帐号上的操作必需回滚,以确保帐号的数据的完好性。所以我们把这两个对数据库的操作(insert, delete, update)做为一个操作单元,它们是不能分割的,即事务的原子性。留意:存储过程与触发器都是经过了原子处置。Oracle数据库广州大
5、学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.2.2 一致性 (Consistency)所谓一致性是指数据库中事务操作前和事务处置后,其中的数据必需都满足业务规那么约束。如上述的例子,转账前后的总金额必需一样。虽然在事务的过程会出现短暂的不一致,这也是暂时的,当事务提交时,数据库必需恢复到一致形状。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.2.3 隔离性(Isolation)隔离性是数据库允许多个并发事务同时对其中的数据进展读写和修正才干,隔离性可以防止多个事务在并发执行时,由于它们的操
6、作命令交叉执行而导致数据的不一致形状。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.2.4 耐久性 (Durability)事务的耐久性表示为:当事务处置终了后,该事务对数据的修正是永久的,即使是系统遇到缺点的情况下也不会丧失的。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.3 事务控制语句 在Oracle中没有提供开场事务处置语句,一切的事务都是隐式开场的。也就是说,在Oracle中用户不可以显式运用命令来开场一个事务。Oracle以为第一条修正数据库的语句,或者一
7、些要求事务处置的场所都是事务隐式的开场。但是,当用户想要终止一个事务处置时,必需显式运用COMMIT和ROLLBACK语句终了。针对事务的ACID特点,Oracle提供了如下语句对事务进展控制:SET TRANSACTION 设置事务的属性SET CONSTRAINS 在当前事务中设置约束方式SAVEPOINT 在事务中建立一个存储点RELEASE SAVEPOINTROLLBACKCOMMITOracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.3.1 设置事务属性pSET TRANSACTION该语句可用来设置事务各种属性,而且是在事
8、务处置中运用的第一个语句。它可以让用户对事务以下的属性进展设置:p 指定事务的隔离层p 规定事务回滚时所运用的存储空间p 命名事务p留意:SET TRANSACTION 只对当前要处置的事务进展设置,当事务终了时,对事务的属性的设置也将失效Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 p 事务隔离层定义了一个事务与其他事务的隔离程度。在并发事务中会发生如下异常:p 错读错读就是事务A对数据进展修正,而另外事务B读取了修正后的数据,由于某种缘由A取消了对数据的修正,使数据前往到原来的形状,而B原来读取的数据与数据库的数据不符。p 非反复读
9、是指事务A读取了数据,而事务B随后更改了该数据,而A再次读取该数据时,就会发现数据曾经变化,同一个事务前后两次读取的数据不一样。p 假读事务A基于某个条件查找数据后,事务B更新了同一个表中的数据,当A再次根据一样的搜索条件前往了不同的行。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 上述三种异常的发生,都与事务的隔离层的设置有关。选择隔离层: READ COMMITTED 这是Oracle默许的隔离层 SERIALIZABLE 序列化,事务与事务完全隔开 READ ONLY 和 READ WRITE当运用READ ONLY选项时,事务不
10、能有任何修正数据库中数据的语句。它是SERIALIZABLE的子集。READ WRITE是默许设置。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 p建立SET TRANSACTION 语句pSET TRANSACTION READ ONLYpSET TRANSACTION READ WRITEpSET TRANSACTION ISOLATION LEVEL COMMITTEDpSET TRANSACTION ISOLATION LEVEL SERIALIZABLEp对于大部分运用来说,READ COMMITTED 是最适宜的隔离层。虽然
11、也存在非反复读和假读景象,但是它能提供较高的并发性。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.3.2 终了事务虽然Oracle采用隐式开场一个事务,在终了时必需运用相关的事务控制语句显式终了,以下情况Oracle会以为一个事务终了: COMMIT ROLLBACK 如有事务中运用了存储点,那么只取消存储点后的事务处置,而且事务并不会终止 DDL 执行时(意味着前面的DML操作曾经COMMIT) 用户断开衔接时(disconn) 用户进程不测,这时用户当前的事务被回滚Oracle数据库广州大学华软软件学院 软件工程系 Oracl
12、e数据库广州大学华软软件学院 软件工程系 11.3.3 存储点在事务过程中,假设发生了错误并用rollback进展了回滚,那么在整个事务处置中对数据所做的一切修正都将被撤销。 这对一个较小的事务时并没有什么问题。但是事务非常庞大时,这将浪费大量的资源,处理这个问题的方法就是运用存储点。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.4 并发控制 对于多用户数据库系统而言,当多个用户并发地操作时,会产生多个事务同时操作同一数据的情况。假设对并发操作不加控制就能够会发生读取和写入不正确的数据,破坏数据库的一致性。所以数据库管理系统必需提
13、供并发控制机制。因此,一个数据库管理系统性能的优劣,很大一部分取决于并发控制。所谓并发控制是指要用正确的方式实现事务的并发操作,防止呵斥数据的不一致性。为了维护事务的一致性,Oracle运用了锁机制防止其他用户修正另外一个未完成事务中的数据。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.4.1 锁锁是一种控制共享资源并发访问的一种机制。比如事务T1要访问某个数据表,在它访问前需求对该数据表加锁。此时事务T2要访问该数据表时必需等到T1对该数据表解锁后才干访问。锁是Oracle自动管理的,也可由用户运用LOCK TABLE显式对要访
14、问的资源加锁,事务的开场和终了决议了锁的持有和释放。Oracle中的锁可分成三类:DML锁DDL锁内部锁Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.4.2 锁方式事务对数据库的操作可以概括为读和写,当两个事务对同一个数据项进展操作时,能够的情况包括:读-读、写-读、读-写、写-写。除了读-读,其它都能够导致数据的不一致,因此要经过不同方式的锁来防止数据不一致的发生。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 锁模式锁模式说明说明共享锁(Share, S)S锁称为共享锁,
15、某个事务使用S锁锁定了表,则允许其他事务使用S锁锁定该表,不允许对该表进行任何更新。排他锁(Exclusive,X)X锁又称写锁,某个事务对表加了X锁,则不允许其他事务锁定该表。行级共享锁(Row Share, RS)如果事务更新表,使用RS锁定相应的行,则表中的其他行可以让其他事务锁定。行级排他锁(Row Exclusive,RX)如果事务更新表,使用RX锁定相应的行,则不允许其他事务再锁定该表。共享行级排他锁(Share Row Exclusive, SRX)如果某个事务对表加SRX锁,则表示对该表加RS所,而对要进行更新的行加RX锁。Oracle数据库广州大学华软软件学院 软件工程系 O
16、racle数据库广州大学华软软件学院 软件工程系 p 共享锁:lock table emp in share mode;p 排他锁:lock table dept in exclusive mode;p 行级共享锁:lock table salgrade in row share mode;p 行级排他锁:lock table emp in row exclusive mode;p 共享行级排他锁:lock table emp in share row exclusive mode;Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.5
17、 锁粒度 锁粒度是指被锁定的数据对象的大小称为锁粒度。锁粒度与数据库系统的并发度和并发控制的开销亲密相关。锁粒度越大,数据库中所可以运用的资源也就越少,并发度也就越小,系统开销也就越小;反之,锁的粒度越小,并发度也就越大,但系统的开销也就越大。普通来讲,数据库中锁的粒度可以分为4个级别:数据库级、表级、行级和列级Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.5.1 TX锁行级锁、事务锁TX锁定本义是Transaction锁(行级锁、事务锁),当一个事务执行更新数据操作时,它即获得一个TX锁,直至该事务终了时才释放该锁。一个TX锁可
18、以锁定该事务涉及的多行数据。TX锁是Oracle支持锁定的最低级别。在更新过程中,行级别锁会阻止这一行上的任何其他DML操作发生。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.5.2 TM锁表级锁Oracle的行级锁虽然只需一种(TX),但是TM(表级锁) 类型共有5种锁方式:S锁X锁RS锁RX锁SRX锁由于表是由行组成的,所以向某个表加锁时,Oracle一方面需求检查锁与表上原有的表级锁能否相容,另一方面还要检查锁能否与表中的每一行的锁能否相容。Oracle数据库广州大学华软软件学院 软件工程系 Oracle数据库广州大学华软软件学院 软件工程系 11.5.3 数据库级锁数据库级别的锁将锁定整个数据库,以制止任何新会话和新事务。可以运用一下语句更改数据库的限制性数据库级锁方式中:alter system anable RESTRICTE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司项目沟通管理制度
- 2024年内江客运从业资格证考试技巧
- 2024年百色道路运输客运从业资格证模拟考试
- 吉首大学《基础和声2》2021-2022学年第一学期期末试卷
- 吉首大学《操作系统原理》2021-2022学年期末试卷
- 《机床夹具设计》试卷12
- 吉林艺术学院《衣纹原理》2021-2022学年第一学期期末试卷
- 吉林艺术学院《民族音乐学Ⅰ》2021-2022学年第一学期期末试卷
- 网红小院运营合作协议书范本
- 招聘直播员工合同协议书范文
- 江苏省中等职业学校学业水平考试语文卷含答案
- 保洁员安全保证书
- 2024-2025学年二年级上学期数学期中模拟试卷(苏教版)(含答案解析)
- 2024年天津市专业技术人员继续教育网公需课答案
- 期中测试卷-2024-2025学年统编版语文四年级上册
- 公司解散清算的法律意见书、债权处理法律意见书
- 立冬节气介绍立冬传统习俗气象物候起居养生课件
- 部门安全培训试题(打印)
- 2024-2030年中国电子战行业市场发展趋势与前景展望战略分析报告
- 商务星球版八年级地理上册地理总复习提纲
- 劳务派遣 投标方案(技术方案)
评论
0/150
提交评论