《第8章事务与并发控制.ppt》由会员分享,可在线阅读,更多相关《第8章事务与并发控制.ppt(47页珍藏版)》请在优知文库上搜索。
1、第第8 8章章 事务与并发控制事务与并发控制v8.1 8.1 事务事务 8.1.1 8.1.1 事务的基本概念事务的基本概念 8.1.2 8.1.2 事务的特征事务的特征 8.1.3 8.1.3 事务处理模型事务处理模型v8.2 8.2 并发控制并发控制8.1.1 8.1.1 事务的基本概念事务的基本概念v事务是用户定义的数据操作系列,这些事务是用户定义的数据操作系列,这些操作作为一个完整的工作单元,一个事操作作为一个完整的工作单元,一个事务内的所有语句被作为一个整体,要么务内的所有语句被作为一个整体,要么全部执行,要么全部不执行。全部执行,要么全部不执行。v例如:对于一个转帐活动:例如:对于
2、一个转帐活动:A A帐户转帐给帐户转帐给B B帐户帐户n n元钱,这个活动包含两个动作:元钱,这个活动包含两个动作:第一个动作:第一个动作:A A帐户帐户 n n 第二个动作:第二个动作:B B帐户帐户 n n说明说明v假设第一个操作成功了,第二个操作由于某假设第一个操作成功了,第二个操作由于某种原因没有成功种原因没有成功,在系统恢复在系统恢复正常正常后,后,A A账账户的金额户的金额应应是是多少多少?v如果如果B B账户的金额没有变化,则正确的情况账户的金额没有变化,则正确的情况是是A A账户的金额也应该账户的金额也应该没有变化没有变化。v怎样保证在系统恢复之后,怎样保证在系统恢复之后,A
3、A账户中的金额账户中的金额没有减少没有减少?这就要用到事务的概念。?这就要用到事务的概念。v事务可以保证在一个事务中的全部操作或者事务可以保证在一个事务中的全部操作或者全部成功,或者全部失败。全部成功,或者全部失败。8.1.2 8.1.2 事务的特征事务的特征 v 原子性原子性(AtomicityAtomicity):指事务是数据库的逻辑工:指事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。作单位,事务中的操作要么都做,要么都不做。v 一致性一致性(ConsistencyConsistency):指事务执行的结果必须:指事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性
4、状是使数据库从一个一致性状态变到另一个一致性状态。态。v 隔离性隔离性(IsolationIsolation):指数据库中一个事务的执:指数据库中一个事务的执行不能被其它事务干扰。行不能被其它事务干扰。v 持久性持久性(Durability Durability):也称为永久性。指事务:也称为永久性。指事务一旦提交,其对数据库数据的改变就是永久的。一旦提交,其对数据库数据的改变就是永久的。v保证事务的保证事务的ACIDACID特性是事务处理的重要特性是事务处理的重要任务。任务。v事务的事务的ACIDACID特性可能遭到破坏的因素有:特性可能遭到破坏的因素有:多个事务并行运行时,不同事务的操多个
5、事务并行运行时,不同事务的操作有交叉情况;作有交叉情况;事务在运行过程中被强迫停止。事务在运行过程中被强迫停止。8.1.3 8.1.3 事务处理模型事务处理模型 v隐式事务隐式事务:隐式事务是每一条数据操:隐式事务是每一条数据操作语句都自动地成为一个事务。作语句都自动地成为一个事务。v显式事务显式事务:有显式的开始和结束标记:有显式的开始和结束标记的事务。的事务。ISOISO事务处理模型事务处理模型 T-SQLT-SQL事务处理模型事务处理模型(SQL Server(SQL Server采用采用)T-SQLT-SQL事务处理模型事务处理模型v每个事务都有显式的开始和结束标记。每个事务都有显式的
6、开始和结束标记。v事务的开始标记是:事务的开始标记是:BEGIN TRANSACTION|TRANBEGIN TRANSACTION|TRANv事务的结束标记为:事务的结束标记为:COMMIT COMMIT TRANSACTIONTRANSACTIONTRANTRANROLLBACK ROLLBACK TRANSACTIONTRANSACTIONTRANTRAN示例示例BEGIN TRANSACTIONBEGIN TRANSACTION UPDATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 =帐户总额帐户总额 -n-nWHERE WHERE 帐户名帐户名 =A=AUPDA
7、TE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 =帐户总额帐户总额 +n+nWHERE WHERE 帐户名帐户名 =B=BCOMMITCOMMIT8.2 8.2 并发控制并发控制 v8.2.1 8.2.1 并发控制概述并发控制概述 v8.2.2 8.2.2 并发控制措施并发控制措施v8.2.3 8.2.3 封锁协议封锁协议v8.2.4 8.2.4 活锁和死锁活锁和死锁v8.2.5 8.2.5 并发调度的可串行性并发调度的可串行性 v8.2.6 8.2.6 两段锁协议两段锁协议 8.2.1 8.2.1 并发控制概述并发控制概述v数据库中的数据是一个共享的资源,因此数据库中的数
8、据是一个共享的资源,因此会有很多用户同时使用数据库中的数据,会有很多用户同时使用数据库中的数据,v在多用户系统中,可能同时运行着多个事在多用户系统中,可能同时运行着多个事务,而事务的运行需要务,而事务的运行需要时间时间,并且事务中,并且事务中的操作是在一定的的操作是在一定的数据数据上进行的。上进行的。v当系统中同时有多个事务在运行时,特别当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,是当这些事务是对同一段数据进行操作时,彼此之间就有可能产生彼此之间就有可能产生相互干扰相互干扰的情况。的情况。v如:订票、银行如:订票、银行不同的多事务执行方式不同的多事务执行方式v串行
9、执行串行执行 每个时刻只有一个事务运行,每个时刻只有一个事务运行,其他事务必须等到这个事务其他事务必须等到这个事务结束以后方能运行。结束以后方能运行。问题:不能充分利用系统资问题:不能充分利用系统资源,发挥数据库共享资源的源,发挥数据库共享资源的特点。特点。T1T2T3不同的多事务执行方式不同的多事务执行方式v交叉并行执行交叉并行执行 在单处理机系统中,事务的在单处理机系统中,事务的并行执行是这些并行事务的并行执行是这些并行事务的并行操作轮流交叉运行。并行操作轮流交叉运行。单处理机系统中的并行事务单处理机系统中的并行事务并没有真正地并行运行,但并没有真正地并行运行,但能够减少处理机的空闲时间,
10、能够减少处理机的空闲时间,提高系统的效率。提高系统的效率。T1T2T3不同的多事务执行方式不同的多事务执行方式v同时并发方式同时并发方式 多处理机系统中,每个处理机可以运多处理机系统中,每个处理机可以运行一个事务,行一个事务,多个处理机可以同时运行多个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行。实现多个事务真正的并行运行。v这里讨论单处理机环境下的并发控这里讨论单处理机环境下的并发控制技术。制技术。并发事务的相互干扰示例并发事务的相互干扰示例v A A、B B两个订票点恰巧同时办理同一架航班的飞机两个订票点恰巧同时办理同一架航班的飞机订票业务。设其操作过程及顺序如下:订票
11、业务。设其操作过程及顺序如下:A A订票点(事务订票点(事务A A)读出航班目前的机票余额数,假)读出航班目前的机票余额数,假设为设为1010张;张;B B订票点(事务订票点(事务B B)读出航班目前的机票余额数,也)读出航班目前的机票余额数,也为为为为1010张;张;A A订票点订出订票点订出6 6张机票,修改机票余额为张机票,修改机票余额为10-6=410-6=4,并,并将将4 4写回到数据库中;写回到数据库中;B B订票点订出订票点订出5 5张机票,修改机票余额为张机票,修改机票余额为10-5=510-5=5,并,并将将5 5写回到数据库中;写回到数据库中;事务并发执行带来的问题事务并发
12、执行带来的问题v会产生多个事务同时存取同一数据的情会产生多个事务同时存取同一数据的情况。况。v可能会存取和存储不正确的数据,破坏可能会存取和存储不正确的数据,破坏事务一致性和数据库的一致性。事务一致性和数据库的一致性。v并发控制是衡量并发控制是衡量DBMSDBMS性能的重要标志之性能的重要标志之一。一。并发操作带来的数据不一致性并发操作带来的数据不一致性v丢失修改丢失修改v读读“脏脏”数据数据v不可重复读不可重复读v产生产生“幽灵幽灵”数据数据丢失修改丢失修改读读“脏脏”数据数据 不可重复读不可重复读 产生产生“幽灵幽灵”数据数据 v属于不可重复读的范畴。属于不可重复读的范畴。v指当事务指当事
13、务T T1 1按一定条件从数据库中读取了某按一定条件从数据库中读取了某些数据记录后,事务些数据记录后,事务T T2 2删除了其中的部分记删除了其中的部分记录,或者在其中添加了部分记录,则当录,或者在其中添加了部分记录,则当T T1 1再再次按相同条件读取数据时,发现其中莫名其次按相同条件读取数据时,发现其中莫名其妙地少了(对删除)或多了(对插入)一些妙地少了(对删除)或多了(对插入)一些记录。记录。v这样的数据对这样的数据对T T1 1来说就是来说就是“幽灵幽灵”数据或称数据或称“幻影幻影”数据。数据。8.2.2 8.2.2 并发控制措施并发控制措施v控制目标:事务运行过程中尽可能隔离控制目标
14、:事务运行过程中尽可能隔离事务外操作对本事务数据环境的影响。事务外操作对本事务数据环境的影响。v并发控制的主要技术并发控制的主要技术加锁加锁(Locking)(Locking)v加锁就是事务加锁就是事务T T在对某个数据操作之前,在对某个数据操作之前,先向系统发出请求,封锁其所要使用的先向系统发出请求,封锁其所要使用的数据。在事务数据。在事务T T释放它的锁之前,其他释放它的锁之前,其他事务不能操作这些数据。事务不能操作这些数据。v锁的类型:锁的类型:共享锁共享锁、排他锁排他锁共享锁共享锁v简记为简记为S S锁锁:若事务:若事务T T给数据对象给数据对象A A加了加了S S锁,则事务锁,则事务
15、T T可以读可以读A A,但不能修改,但不能修改A A,其,其他事务可以再给他事务可以再给A A加加S S锁,但不能加锁,但不能加X X锁,锁,直到直到T T释放了释放了A A上的上的S S锁为止。锁为止。v对于读操作(检索),可以多个事务同对于读操作(检索),可以多个事务同时获得共享锁,但阻止其它事务对已获得时获得共享锁,但阻止其它事务对已获得共享锁的数据进行排它封锁。共享锁的数据进行排它封锁。排他锁排他锁v简记为简记为X X锁锁 :若事务:若事务T T给数据对象给数据对象A A加了加了X X锁,则允许锁,则允许T T读取和修改读取和修改A A,但不允许其他,但不允许其他事务再给事务再给A
16、A加任何类型的锁和进行任何操加任何类型的锁和进行任何操作。作。v一旦一个事务获得了对某一数据的排他一旦一个事务获得了对某一数据的排他锁,则任何其他事务均不能对该数据进行锁,则任何其他事务均不能对该数据进行任何封锁,其他事务只能进入等待状态,任何封锁,其他事务只能进入等待状态,直到第一个事务撤销了对该数据的封锁。直到第一个事务撤销了对该数据的封锁。锁的相容矩阵 8.2.3 8.2.3 封锁协议封锁协议 v在运用在运用X X锁和锁和S S锁对数据对象进行加锁时,锁对数据对象进行加锁时,还需要约定一些规则,如何时申请还需要约定一些规则,如何时申请X X锁或锁或S S锁、持锁时间、何时释放锁等。锁、持锁时间、何时释放锁等。v称这些规则为称这些规则为封锁协议封锁协议或或加锁协议加锁协议。v对封锁方式规定不同的规则,就形成了对封锁方式规定不同的规则,就形成了各种不同级别的封锁协议。各种不同级别的封锁协议。v不同级别的封锁协议达到的系统一致性不同级别的封锁协议达到的系统一致性级别不同。级别不同。一级封锁协议一级封锁协议 v对事务对事务T T要修改的数据加要修改的数据加X X锁,直到事锁,直到事务结束