《Oracle数据库应用开发及实践》课件08-第8章 事务管理与并发控制_第1页
《Oracle数据库应用开发及实践》课件08-第8章 事务管理与并发控制_第2页
《Oracle数据库应用开发及实践》课件08-第8章 事务管理与并发控制_第3页
《Oracle数据库应用开发及实践》课件08-第8章 事务管理与并发控制_第4页
《Oracle数据库应用开发及实践》课件08-第8章 事务管理与并发控制_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-1-本章目标理解事务的概念熟悉事务的特性及应用范围掌握事务控制的基本语句及功能

掌握Oracle中事务的实现及应用了解并发访问带来的问题理解锁、锁定和锁定协议的相关概念理解活锁与死锁的概念理解锁的粒度掌握Oracle中的锁的分类及特点掌握通过SQL*Plus检测与解决锁争用-2-事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务性质:原子性、一致性、隔离性、持久性

数据访问:read(X)、write(X)事务的概念-3-活动状态(active):事务在执行时的状态;部分提交状态(partiallycommitted):事务中最后一条语句执行后的状态;失败状态(failed):事务不能正常执行时的状态;中止状态(aborted):事务回滚并且数据库已恢复到事务开始执行前的状态;提交状态(committed):事务成功完成后的状态。事务的状态-4-特性:ACID

一致性原子性持久性隔离性事务的特性与应用-5-搭建事务演示环境:事务的开始与结束:不需要使用专门的语句来显式的表示事务的开始事务的提交:使用COMMIT语句来显式提交事务事务的回滚与保存点:ROLLBACK/SAVEPOINT事务控制-6-并发问题:更新丢失(lostupdate)脏读(dirtyread)不可重复读(non-repeatableread)幻读(phantomread)隔离级别序列化级别(serializable)可重复读(repeatableread)读已提交(readcommitted)读未提交(readuncommitted)事务隔离级别-7-独占锁(eXclusivelock,即X锁)独占锁是对锁定的资源只允许进行锁定操作的事务使用的,独占锁又称为写锁共享锁(Sharelock,即S锁)共享锁是指对不更改或不更新数据的读取操作的事务使用的,共享锁又称为“读锁”,它是非独占的,允许多个并发事务读取其锁定的数据库对象。锁与锁定对已加锁进行锁操作NL共享锁独占锁共享锁可以可以不可以独占锁可以不可以不可以-8-一级锁定协议:一级锁定协议可以防止丢失修改,并保证事务是可恢复的二级锁定协议:二级锁定协议可以进一步防止脏读的问题三级锁定协议:三级锁定协议可以进一步防止不可重复读的问题锁定协议申请的锁及其作用锁定协议修改时申请独占锁读取时申请共享锁作用操作结束释放事务结束释放操作结束释放事务结束释放不丢失修改不脏读可重复读一级锁定协议是是二级锁定协议是是是是三级锁定协议是是是是是-9-活锁:多个事务并发执行的过程中,可能会存在某个有机会获得锁的事务却永远也没有得到锁,这种现象称为活锁。死锁:多个并发事务处于相互等待的状态,其中的每一个事务都在等待它们中的另一个事务解除锁定。

预防:一次锁定法:要求每个事务必须一次将所有要使用的数据库对象全部锁定顺序锁定法:要求预先对数据库对象规定一个锁定的顺序,所有事务都按这个顺序来实行锁定活锁与死锁-10-超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。

不足:有可能误判死锁时限若设置的太长,死锁发生后不能及时发现等待图法:是用离散数学的图论来诊断死锁,事务等待图动态地反映了当前的各个事务之间的等待情况诊断与解除死锁-11-粒度划分:从高到低依次划分为数据库、表、记录、列锁的粒度与系统的并发度和并发控制的开销密切相关。事务到底使用哪种级别上的锁定,应当根据事务要处理的数据量来决定。多粒度锁定:商业化的数据库管理系统锁的粒度-12-DDL锁:防止在用DML语句操作数据库表时,对表进行删除或对表的结构进行更改排它DDL锁:创建、修改、删除一个数据库对象的DDL语句获得操作对象的排它锁共享DDL锁:需在数据库对象之间建立相互依赖关系的DDL语句通常需共享获得DDL锁分析锁:一种独特的DDL锁类型,Oracle使用它追踪共享池对象及它所引用数据库对象之间的依赖关系。DML锁:防止多个事务并发访问数据时对数据一致性和完整性破坏行锁表级锁

Oracle中锁的分类-13-数据库级别的锁

将数据库设置成受限方式将数据库更改成只读方式表级别的锁

用于还没提交或回退事务之前,防止其他用户对表的结构进行更改行级别的锁行级别的锁是Oracle中支持的最低级别的锁,而且行级锁只有独占锁定模式,没有共享锁定模式Oracle中锁的级别-14-通过SQLDeveloper检测与解决锁争用

在被杀死的会话中无论是使用commit语句还是rollback语句,都会出现“ORA-00028:您的会话己被终止”的提示,并且需要重新登录才能操作数据库。通过OEM检测与解决锁争用

输入https://localhost:1158/em就会进入登录界面首先以SYS用户并以SYSDBA身份登录OEM,进入“主目录”页面,在该页面中单击“性能”超链接,进入“性能”属性页面。然后单击“性能”属性页面中“其他监视链接”标题下的“实例锁”超连接,将进入“实例锁”页面Oracle中的锁争用的检测与解决-15-事务是用户定义的数据库操作序列事务的基本操作包括事务开始、事务读写、事务结束和事务提交事务特性包括原子性、一致性、隔离性和持久性,简称ACID事务开始前可以通过语句设置当前事务的执行属性,如:是否可读、是否可写、隔离级别等并发的事务之间可能会发生访问冲突,这就需要一个能自动解决事务对数据的并发访问所带来的问题的机制,这种机制就是并发控制锁技术可以有效的解决并行操作的一致性问题不同的数据库管理系统提供的锁实现不尽相同,但是基本原理和技术是相同的小结-1-16-锁有两种最基本的类型:独占锁和共享锁锁定的粒度与系统的并发度和并发控制的开销密切相关。一般来讲,锁定的粒度越大,需要锁定的对象就越少,可选择性就越小,并发度就越小,开销就越小;反之,锁定的粒度越小,需要锁定的对象就越多,可选择性就越大,并发度就越大,开销就越大在多个事务并发执行的过程中可能出现死锁,可以使用一次锁定法或顺序锁定法预防死锁,使用超时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论