《数据库技术》课件第16章 事务处理与锁3.0.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《数据库技术》课件第16章 事务处理与锁3.0.pptx》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库技术 数据库技术课件第16章 事务处理与锁3.0 课件 16 事务处理 3.0
- 资源描述:
-
1、16事务处理与锁事务处理与锁事务在事务在DBMS中处于核心中处于核心地位地位 并发控制以事务为单位 数据库恢复以事务为单位2015-816-2Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁理论和实践主要贡献者理论和实践主要贡献者James Gray 1944.1.12,生于加州旧金山 19611966,BS,UCB,数学 Bell实验室,参与Multics项目 1969,PhD,UCB,程序语言 1973,IBM,参与System R项目 1995,Microsoft 因数据库和事务处理的贡献,获1998年度图灵奖 2007-01-28,失踪2015-816-
2、3Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁James Gray2015-816-4Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁什么是事务什么是事务 事务是若干操作的集合。集合中的所有操作要么都完成,要么都取消。2015-816-5Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁事务举例事务举例超市付款超市付款 在超市买了一盒牙膏(5元),一袋洗衣粉(10元),最后付款,超市收银系统需要依次执行下面操作 牙膏库存量-1 洗衣粉库存量-1 你的银行卡余额-15 超市账户余额+15 以上四个操
3、作要么都完成,要么都取消2015-816-6Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁事务的事务的ACID属性属性 Atomicity Correctness Isolation Durability2015-816-7Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁事务的两种基本操作事务的两种基本操作 commit 把重做缓冲区的数据写入重做文件 释放事务中的锁 把commit操作的scn号写入重做文件 rollback 把undo表空间中的旧数据替换新数据,撤销事务中的操作效果2015-816-8Oracle数据库系统原
4、理数据库系统原理-第第16章章 事务处理与锁事务处理与锁commit背后背后 把重做缓冲区的数据写入重做文件 释放事务中的锁 把commit操作的scn号写入重做文件2015-816-9Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁DDL与与DCL的事务处理的事务处理方式方式 在执行的语句前后自动执行commit2015-816-10Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁SQL标准中的四种隔离标准中的四种隔离级别级别 read committed 只能读取到其他连接提交后的修改结果 read unommitted 读取
5、到其他连接未提交的修改结果,Oracle支持 repeatable 事务中的第一次读取结果在第二次读取中不会改变 serializable 事务中的两次读取操作完全相同,Oracle支持2015-816-11Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁并发控制要解决并发控制要解决的的问题问题 丢失更新 脏读 不可重复读2015-816-12Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁丢失更新示例丢失更新示例 为了促销,超市要降低某商品的价格,降价条件有两个:若其当前价格高于 100 元,则把价格调整为原来的 1/2(即五折
6、),若库存量高于 1000,则把价格调整为原来的 4/5(即八折),两个条件是独立的,如果两个条件都满足,价格五折后,再八折。如某商品当前价格为 200,库存量 1500,则降价的两个条件均满足,五折后,其价格降低至 100,再八折后,其价格降低至 80,这样其最后价格为 80。2015-816-13Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁丢失更新示例丢失更新示例 若工作人员 A 依据第一个条件调价,工作人员 B 依据第二个条件调价,分别使用两个连接,操作顺序如下:2015-816-14Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁
7、事务处理与锁丢失更新示例丢失更新示例 两个工作人员各自完成上述操作后,工作人员 B 把 A 的修改结果覆盖了,导致最后价格不是 80,而是 160。虽然两个工作人员的操作步骤都是正确的,因为没有合适的并发控制,导致最后的结果是错误的。2015-816-15Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁脏读脏读 脏读是指一个连接读取了其他尚未提交的事务修改的数据。脏读破坏了事务的原子性,读取到的是事务进行过程中的中间结果,若此结果与事务结束时的结果不同,则此连接读取的是错误数据,如果以此错误数据为依据继续执行另外的任务,则可能造成一连串的错误。2015-816-
8、16Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁脏读示例脏读示例 一顾客购买了 2 支钢笔、10 个笔记本,总价 100 元,收银员在连接 A 完成收银操作,超市采购员在连接 B 查询商品库存,确定某种商品是否需要进货。假定收银开始前,钢笔库存量为 100,笔记本库存量为 300,下面是两个连接在不同时间进行的操作:2015-816-17Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁不可重复读不可重复读 不可重复读是指一个事务中的查询操作因为分为多个步骤,导致其结果既包括了某个事务开始之前的数据,也包括了这个事务开始之后的数
9、据,从而在最后得到了错误的查询结果。2015-816-18Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁不可重不可重复读复读示例示例 各帐号初始值2015-816-19Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁不可重不可重复读示例复读示例 用户 A 查询银行三个账号的余额总和。用户 B 由 acc3 账号转账 100 至 acc1。2015-816-20Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁Oracle对三个并发问题的对三个并发问题的解决方法解决方法 丢失更新:通过锁解决。脏读问题
10、:通过多版本数据解决。不可重复读:通过多版本数据解决 把连接的事务隔离级别设置为 serializable,本连接的查询只能读取到事务开始之前的数据。2015-816-21Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁锁锁 锁是用来控制访问共享资源的一种机制 目的是把并发操作串行化2015-816-22Oracle数据库系统原理数据库系统原理-第第16章章 事务处理与锁事务处理与锁Oracle自动附加的锁自动附加的锁 DML锁(数据锁)保护修改的数据不被其他事务并发修改 DDL锁(数据字典锁)避免DDL语句操作的对象被其他用户修改而附加的锁 在DDL操作完成后
展开阅读全文