数据库事务与并发控制概要课件.ppt

上传人:飞****2 文档编号:73429452 上传时间:2023-02-18 格式:PPT 页数:20 大小:226.50KB
返回 下载 相关 举报
数据库事务与并发控制概要课件.ppt_第1页
第1页 / 共20页
数据库事务与并发控制概要课件.ppt_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《数据库事务与并发控制概要课件.ppt》由会员分享,可在线阅读,更多相关《数据库事务与并发控制概要课件.ppt(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据库事务与并发控制n事务的基本概念n三个并发问题n并发控制:锁以及三级封锁协议n死锁n可串行性和两段锁协议事务的基本概念n所谓事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。n事务有两种一种是显式事物,另一种是隐式事物。n隐式事务是指每一条数据操作语句都自动地成为一个事物n显式事务是指有显式的开始和结束标记的事物。显示事务的SQL定义nBEGINTRANSACTIONnCOMMITnROLLBACK在SQL语言中,定义事务的语句有三条:事务通常是以BEGINTRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提交,即提交事务的

2、所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始时的状态。这里的操作指对数据库的更新操作。事务的特性n原子性原子性事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。n一致性一致性事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,系统将事务中对数据库的所有已

3、完成的操作全部撤消,滚回到事务开始时的一致状态。n隔离性隔离性一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。n持续性持续性持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。事务是恢复和并发控制的基本单位保证事务ACID特性是事务处理的重要任务。事务ACID特性可能遭到破坏的因素有:多个事务并行运行时,不同事务的操作交叉执行。多个事务并行运行时,不同事务的操作交叉执行。事务在运行过程中被强行停止。事务在运行过程中被

4、强行停止。在第一种情况下,数据库管理系统必须保证多个事务的交叉运行不影响这些事务的原子性。在第二种情况下,数据库管理系统必须保证被强行终止的事务对数据库和其它事务没有任何影响。这些就是数据库管理系统中恢复机制和并发控制机制的责任。三个并发问题n丢失更新问题n未提交依赖问题n不一致分析问题丢失更新问题事务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的金额10转到帐户1上。A产生的结果为110,显然不正确。如果A将该结果写回到数据库,实际上将使数据库处于不一致的状态。事务A看到了数据库的不一致的状态,并因此进行了不一致的分析。注意该例与前例的不同:这里不存在A依赖未提交的更新问题,因为B在A看到ACC3前已提交了所有更新。并发控制n并发控制:用正确的方式调度并发操作,使一个用户事务的执

6、行不受其它事务的干扰,从而避免造成数据的不一致性。n并发控制的主要技术是封锁(locking).如在飞机订票例子中,甲事务要修改A,若在读出A前先锁住A,其它事务不能再读取和修改A,直到甲修改并写回A后解除了对A的封锁为止。这样甲就不会丢失修改。n事务T在对某个数据对象如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后T对数据对象有一定的控制(具体的控制由封锁类型决定),在事务T释放前,其它事务不能更新此数据对象。锁的分类n排它锁(排它锁(X锁、写锁)锁、写锁)若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务不能对A加任何类型的锁,直到T释放A上的锁。从而保证其它事务在

7、T释放A上的锁前不能再读取和修改A。n共享锁(共享锁(S锁、读锁)锁、读锁)T对数据对象A加上S锁,则T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。保证了在T对A加S锁过程中其它事务对A只能读,不能修改。封锁协议n一级封锁协议n二级封锁协议n三级封锁协议在运用X锁和S锁对数据对象加锁时,需要遵循的规则(如何时申请X锁或S锁、持锁时间、何时释放等),这些规则即为封锁协议。对封锁方式规定不同的规则即形成了各种不同的封锁协议,不同级别的封锁协议分别在不同程度上解决一定程度的一致性问题。一级封锁协议事务T在修改数据R之前必须先对其加X锁,直到事务结束(即通过co

8、mmit和rollback结束)才释放。作用作用:防止丢失修改,保证事务T可恢复。二级封锁协议一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。作用作用:防止丢失修改及读“脏”数据三级封锁协议一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。作用作用:防止丢失修改,防止读“脏”数据以及防止不可重复读封锁协议比较三个级别的封锁协议的主要区别在于什么操作需要申请封锁,以及何时释放锁(即持锁时间)。三个级别的封锁协议可以总结为下表:死锁图中的r 1和r 2(r表示资源)表示任何可锁的对象,不必仅为数据库的元组,语句“LOCK.EXCLUSIVE”表

9、示任何申请(排它)锁的操作。死锁发生时两个或更多的事务同时处于等待状态,每个事务都在等待其它的事务释放锁使其可继续执行。死锁的解除死锁发生时,系统必须能检测并解除它。检测死锁就是检测等待图(即“谁在等待谁”)中的环。解除死锁就是选出一个死锁的事务,即图中环上的一个事务,将之回滚,从而释放其所拥有的锁使得其他一些事务可继续执行下去。注意:实际上,并不是所有的系统都进行死锁检测,有些系统采用超时机制,简单地假设在预定时间内不工作的事务发生了死锁。并发调度的可串行性n串行调度多个事务依次执行n并行调度分时法同时处理多个事务可串行性(可串行性(Serializable):):当且仅当多个事务的并发调度结果与按某一次次序串行调度时的结果相同。两段锁协议实现可串行性规定所有事务都必须分为两个阶段对数据项加锁和解锁:1.在对任何一个对象(如一个数据库元组)进行操作之前,事务必须获得对该对象的锁。2.在释放一个锁之后,事务不再获得任何其他锁。遵守该协议的事务分为两个阶段:获得锁阶段,也称为“扩展”阶段;释放锁阶段,也称为“收缩”阶段。注意:实际系统中收缩阶段通常被压缩为事务结束时的单个操作COMMIT或ROLLBACK。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁