欢迎来到天天文库
浏览记录
ID:20569321
大小:1.17 MB
页数:44页
时间:2018-10-13
《第9章事务与并发控制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据库原理与应用(第2版)高等院校计算机教材系列第9章事务与并发控制9.1事务的基本概念9.2并发控制9.1事务的基本概念9.1.1事务9.1.2事务的特征9.1.3事务处理模型9.1.1事务事务是用户定义的数据操作系列,这些操作作为一个完整的工作单元,一个事务内的所有语句被作为一个整体,要么全部执行,要么全部不执行。例如:对于一个转帐活动:A账户转帐给B账户n元钱,这个活动包含两个动作:第一个动作:A账户-n第二个动作:B账户+n9.1.2事务的特征原子性(Atomicity):指事务是数据库的逻辑工作单位,事务中的操作要么都做,
2、要么都不做。一致性(Consistency):指事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。隔离性(Isolation):指数据库中一个事务的执行不能被其它事务干扰。持久性(Durability):也称为永久性指事务一旦提交,则其对数据库中数据的改变就是永久的。保证事务的ACID特性是事务处理的重要任务。事务的ACID特性可能遭到破坏的因素有:多个事务并行运行时,不同事务的操作有交叉情况;事务在运行过程中被强迫停止。9.1.3事务处理模型有两种类型事务:显式事务,隐式事务。隐式事务:隐式事务是每一条数据操作语句
3、都自动地成为一个事务。显式事务:有显式的开始和结束标记的事务。ISO事务处理模型T-SQL事务处理模型ISO事务处理模型明尾暗头:事务的开头是隐含的,结束有明确标记。A.事务结束符COMMIT:事务成功结束符,ROLLBACK:事务失败结束符,B.事务提交方式自动提交:每条SQL语句为一个事务指定位置提交:在事务结束符或程序正常结束处提交C.事务起始/终止位置程序的首条SQL语句或事务结束符后的语句。在程序正常结束处或COMMIT语句处成功终止;在程序出错处或或ROLLBACK处失败终止。示例UPDATE支付表SET账户总额=账户总
4、额-nWHERE账户名=‘A’UPDATE支付表SET账户总额=账户总额+nWHERE账户名=‘B’COMMITT-SQL事务处理模型每个事务都有显式的开始和结束标记。事务的开始标记是:BEGINTRANSACTION
5、TRAN事务的结束标记为:COMMIT[TRANSACTION|TRAN]ROLLBACK[TRANSACTION|TRAN]示例例如前边的转帐例子用Transact-SQL事务处理模型描述为:BEGINTRANSACTIONUPDATE支付表SET账户总额=账户总额-nWHERE账户名=‘A’UPDATE支付表SE
6、T账户总额=账户总额+nWHERE账户名=‘B’COMMIT9.2并发控制9.2.1并发控制概述9.2.2并发控制措施9.2.3封锁协议9.2.4活锁和死锁9.2.5并发调度的可串行性9.2.6两段锁协议多个事务的执行情况9.2.1并发控制概述数据库中的数据是一个共享的资源,因此会有很多用户同时使用数据库中的数据,在多用户系统中,可能同时运行着多个事务,而事务的运行需要时间,并且事务中的操作是在一定的数据上进行的。当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,彼此之间就有可能产生相互干扰的情况。并发事务的
7、相互干扰示例A、B两个订票点恰巧同时办理同一架航班的飞机订票业务。设其操作过程及顺序如下:A订票点(事务A)读出航班目前的机票余额数,假设为10张;B订票点(事务B)读出航班目前的机票余额数,也为为10张;A订票点订出6张机票,修改机票余额为10-6=4,并将4写回到数据库中;B订票点订出5张机票,修改机票余额为10-5=5,并将5写回到数据库中;丢失数据修改读“脏”数据不可重复读产生“幽灵”数据属于不可重复读的范畴。指当事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中的部分记录,或者在其中添加了部分记录,则当T
8、1再次按相同条件读取数据时,发现其中莫名其妙地少了(对删除)或多了(对插入)一些记录。这样的数据对T1来说就是“幽灵”数据或称“幻影”数据。9.2.2并发控制措施控制目标:事务运行过程中尽可能隔离事务外操作对本事务数据环境的影响。在数据库环境下,并发控制的主要方式是封锁机制,即加锁(Locking),加锁是一种并行控制技术,是用来调整对共享目标,如DB中共享的记录并行存取的技术。基本的封锁类型共享锁:指对于读操作(检索)来说,可以多个事务同时获得共享锁,但阻止其它事务对已获得共享锁的数据进行排它封锁。排它锁:一旦一事务获得了对某一数
9、据的排它锁,则任何其它事务再不能对该数据进行排它封锁,其它事务只能进入等待状态,直到第一个事务撤销了对该数据的封锁。加锁类型的相容矩阵9.2.3封锁协议在运用X锁和S锁对数据对象进行加锁时,还需要约定一些规则,如何时申请X锁或S锁、持
此文档下载收益归作者所有