版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库事务与并发控制,事务的基本概念 三个并发问题 并发控制:锁以及三级封锁协议 死锁 可串行性和两段锁协议,事务的基本概念,所谓事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 事务有两种一种是显式事物,另一种是隐式事物。 隐式事务是指每一条数据操作语句都自动地成为一个事物 显式事务是指有显式的开始和结束标记的事物。,显示事务的SQL定义,BEGIN TRANSACTION COMMIT ROLLBACK,在SQL语言中,定义事务的语句有三条:,事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提交,
2、即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始时的状态。这里的操作指对数据库的更新操作。,事务的特性,原子性 事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,系统将事务中对数据库的所
3、有已完成的操作全部撤消,滚回到事务开始时的一致状态。 隔离性 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 持续性 持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。,事务是恢复和并发控制的基本单位,保证事务ACID特性是事务处理的重要任务。事务ACID特性可能遭到破坏的因素有: 多个事务并行运行时,不同事务的操作交叉执行。 事务在运行过程中被强行停止。 在第一种情况下,数据库管理系统必须保证多个事务的交叉运行
4、不影响这些事务的原子性。在第二种情况下,数据库管理系统必须保证被强行终止的事务对数据库和其它事务没有任何影响。 这些就是数据库管理系统中恢复机制和并发控制机制的责任。,三个并发问题,丢失更新问题 未提交依赖问题 不一致分析问题,丢失更新问题,事务A在时间t 1检索元组t;事务B在时间t 2检索同一元组t;事务A在时间t 3更新元组t(基于时间t 1所看到的值);事务B在时间t 4更新元组t(基于时间t 2所看到的值,与t 1时间的值相同)。事务A的更新在t 4时间丢失,因为事务B甚至都没看它就将其覆盖了。,未提交依赖问题,如果一个事务允许检索,或更糟糕的是,更新一个已被其他事务更新但未提交的元
5、组, 这将引起未提交依赖问题。因为如果事务尚未提交,总有可能其将不再提交而是回滚,这种 情况下,第一个事务所看到的数据当前并不存在,某种意义上,从未存在过,不一致分析问题,事务A对帐户余额进行求和,事务B将帐户3的金额1 0转到帐户1上。A产生的结果为11 0,显然不正确。如果A将该结果写回到数据库,实际上将使数据库处于不一致的状态。事务A看到了数据库的不一致的状态,并因此进行了不一致的分析。注意该例与前例的不同:这里不存在A依赖未提交的更新问题,因为B在A看到ACC 3前已提交了所有更新。,并发控制,并发控制:用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据
6、的不一致性。 并发控制的主要技术是封锁(locking).如在飞机订票例子中,甲事务要修改A,若在读出A前先锁住A,其它事务不能再读取和修改A,直到甲修改并写回A后解除了对A的封锁为止。这样甲就不会丢失修改。 事务T在对某个数据对象如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后T对数据对象有一定的控制(具体的控制由封锁类型决定),在事务T释放前,其它事务不能更新此数据对象。,锁的分类,排它锁(X锁、写锁) 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务不能对A加任何类型的锁,直到T释放A上的锁。从而保证其它事务在T释放A上的锁前不能再读取和修改A。 共享锁(S锁、
7、读锁) T对数据对象A加上S锁,则T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。保证了在T对A加S锁过程中其它事务对A只能读,不能修改。,封锁协议,一级封锁协议 二级封锁协议 三级封锁协议,在运用X锁和S锁对数据对象加锁时,需要遵循的规则(如 何时申请X锁或S锁、持锁时间、何时释放等),这些规则即为封锁协议。 对封锁方式规定不同的规则即形成了各种不同的封锁协议,不同级别的封锁协议分别在不同程度上解决一定程度的一致性问题。,一级封锁协议,事务T在修改数据R之前必须先对其加X锁,直到事务结束(即通过commit和rollback结束)才释放。作用:防止丢失修
8、改,保证事务T可恢复。,二级封锁协议,一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。 作用:防止丢失修改及读“脏”数据,三级封锁协议,一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。 作用:防止丢失修改,防止读“脏”数据以及防止不可重复读,封锁协议比较,三个级别的封锁协议的主要区别在于什么操作需要申请封锁,以及何时释放锁(即持锁时间)。三个级别的封锁协议可以总结为下表:,死锁,图中的r 1和r 2(r表示资源)表示任何可锁的对象,不必仅为数据库的元组,语句“ LOCK .EXCLUSIVE”表示任何申请(排它)锁的操作。 死锁发生时两个
9、或更多的事务同时处于等待状态,每个事务都在等待其它的事务释放锁使其可继续执行。,死锁的解除,死锁发生时,系统必须能检测并解除它。检测死锁就是检测等待图(即“谁在等待谁”)中的环。解除死锁就是选出一个死锁的事务,即图中环上的一个事务,将之回滚,从而释放其所拥有的锁使得其他一些事务可继续执行下去。注意:实际上,并不是所有的系统都进行死锁检测,有些系统采用超时机制,简单地假设在预定时间内不工作的事务发生了死锁。,并发调度的可串行性,串行调度 多个事务依次执行 并行调度 分时法同时处理多个事务 可串行性(Serializable): 当且仅当多个事务的并发调度结果与按某一次次序串行调度时的结果相同。,两段锁协议实现可串行性,规定所有事务都必须分为两个阶段对数据项加锁 和解锁: 在对任何一个对象(如一个数据库元组)进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创意桌子设计方案
- 入院接待流程标准化管理
- 诉讼流程核心环节解析
- 搭建线上教育平台整体方案
- 禁毒防范教育
- 2025年城市更新背景下安装工程改造
- 应届毕业解约协议书
- 租用合同取消协议范本
- 租赁合同协议书样本
- 租赁车辆购买协议书
- 2026年交管12123驾照学法减分完整版通关练习题及参考答案详解(模拟题)
- 2025年成都铁路笔试题库及答案
- 甘肃省公安交警辅警考试题库
- 工会财务会计制度规范
- (2026版)贪污贿赂司法解释(二)培训纲要课件
- 2026年消防汽车驾驶员(高级工)技能鉴定考试题库(新版)
- 温州市2026事业单位联考-综合应用能力A类综合管理模拟卷(含答案)
- 2026年湖南省新高考教学教研联盟(长郡二十校联盟)高三语文4月第二次联考(含参考答案)
- 2026年三年级道德与法治下册全册期末考试知识点材料
- 2026中信证券分支机构校园招聘笔试历年难易错考点试卷带答案解析
- 2025版建筑工程建筑面积计算规范
评论
0/150
提交评论