数据库原理及应用(何玉洁)第二版第7章.ppt
《数据库原理及应用(何玉洁)第二版第7章.ppt》由会员分享,可在线阅读,更多相关《数据库原理及应用(何玉洁)第二版第7章.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 数据库保护数据库保护包括数据的一致性和包括数据的一致性和并发控制、安全性、备份和恢复等内并发控制、安全性、备份和恢复等内容。容。事务事务是保证数据一致性的基本是保证数据一致性的基本手段,事务处理技术包括数据库恢复手段,事务处理技术包括数据库恢复技术和并发控制技术。技术和并发控制技术。1第第7 7章章 数据库保护数据库保护 7.1 7.1 事务事务7.2 7.2 并发控制并发控制 7.3 7.3 数据库备份与恢复数据库备份与恢复 27.1 7.1 事务事务一、事务基本概念一、事务基本概念 例如:例如:A A帐户转帐给帐户转帐给B B帐户帐户n n元钱,这个活元钱,这个活动包含两个动作:动包含两
2、个动作:第一个动作:第一个动作:A A帐户帐户 n n 第二个动作:第二个动作:B B帐户帐户 n n 事务事务是用户定义的数据操作系列,这些操是用户定义的数据操作系列,这些操作作为一个完整的工作单元,作作为一个完整的工作单元,一个事务内的所一个事务内的所有语句被作为一个整体,有语句被作为一个整体,要么全部执行,要么要么全部执行,要么全部不执行全部不执行。3 要让系统知道哪个动作属于一个事务,要让系统知道哪个动作属于一个事务,可通过标记事务的开始与结束来实现。在不可通过标记事务的开始与结束来实现。在不同的事务处理模型中,事务的开始标记不完同的事务处理模型中,事务的开始标记不完全一样,但事务的结
3、束标记是一样的。事务全一样,但事务的结束标记是一样的。事务的结束标记有两种:一种是的结束标记有两种:一种是正常结束正常结束,用,用COMMITCOMMIT(提交)(提交)表示,也就是事务中的操作表示,也就是事务中的操作会保存到数据库中成为永久的操作;另一种会保存到数据库中成为永久的操作;另一种是是异常结束异常结束,用,用ROLLBACKROLLBACK(回滚)(回滚)表示也就表示也就是事务中的操作被全部撤销,数据库回到事是事务中的操作被全部撤销,数据库回到事务开始之前的状态。务开始之前的状态。4二、事务的特性二、事务的特性原子性原子性(Consistency)(Consistency)指事务是
4、数据库的逻辑工作单位,事务中的操指事务是数据库的逻辑工作单位,事务中的操 作要么都做,要么都不做。作要么都做,要么都不做。一致性一致性(Atomicity)(Atomicity)指事务执行的结果必须是使数据库从一个一致性指事务执行的结果必须是使数据库从一个一致性 状态变到另一个一致性状态。状态变到另一个一致性状态。隔离性隔离性(Isolation)(Isolation)指数据库中一个事务的执行不能被其它事务干扰指数据库中一个事务的执行不能被其它事务干扰持久性持久性(Durability)(Durability)也称永久性(也称永久性(PermanencePermanence),指事务一旦提交,
5、),指事务一旦提交,则其对数据库中数据的改变就是永久的。则其对数据库中数据的改变就是永久的。5三、三、SQL事务处理模型事务处理模型隐式事务隐式事务 每一条数据操作语句都自动地成为每一条数据操作语句都自动地成为 一个事务。一个事务。显式事务显式事务 有显式的开始和结束标记的事务有显式的开始和结束标记的事务61 1、ISOISO事务处理模型事务处理模型 明尾暗头明尾暗头,即事务的开始是隐含的,而事务,即事务的开始是隐含的,而事务的结束有明确标记。的结束有明确标记。例如:例如:UPDATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 帐户总额帐户总额 n nWHERE WHERE
6、 帐户名帐户名 A AUPDATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 帐户总额帐户总额 n nWHERE WHERE 帐户名帐户名 B BCOMMITCOMMIT72 2、Transact-SQLTransact-SQL事务处理模型事务处理模型 明头明尾明头明尾。事务的开始标记是:。事务的开始标记是:BEGIN TRANSACTION BEGIN TRANSACTION,事务的结束标记为:事务的结束标记为:COMMIT COMMIT TRANSACTIONTRANSACTIONTRANTRAN 和和 ROLLBACK ROLLBACK TRANSACTIONTRAN
7、SACTIONTRANTRAN例如:例如:BEGIN TRANSACTION BEGIN TRANSACTION UPDATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 帐户总额帐户总额 n nWHERE WHERE 帐户名帐户名 A AUPDATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 帐户总额帐户总额 n nWHERE WHERE 帐户名帐户名 B B COMMIT COMMIT87.27.2并发控制并发控制 一个事务完成后,再开始另一个事务,这种一个事务完成后,再开始另一个事务,这种执行方式为执行方式为串行执行串行执行;如果;如果DBMSDBM
8、S可同时接受多个可同时接受多个事务,这些事务在时间上可重叠执行,这种执行事务,这些事务在时间上可重叠执行,这种执行方式为方式为并发执行并发执行。在单在单CPUCPU系统中,同一时间只能有一个事务系统中,同一时间只能有一个事务占据占据CPUCPU,各个事务交叉使用,各个事务交叉使用CPUCPU,这种并发方式,这种并发方式称为称为交叉并发交叉并发;在多;在多CPUCPU系统中,多个事务可同系统中,多个事务可同时占有时占有CPUCPU,这种并发方式称为,这种并发方式称为同时并发同时并发。9一、并发控制概述一、并发控制概述 数据库中的数据是一个共享的资源,因此数据库中的数据是一个共享的资源,因此会有很
9、多用户同时使用数据库中的数据,也就会有很多用户同时使用数据库中的数据,也就是在多用户系统中,可能同时运行着多个事是在多用户系统中,可能同时运行着多个事务,而事务的运行需要时间和一定的数据。那务,而事务的运行需要时间和一定的数据。那么当系统中同时有多个事务在运行时,特别是么当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,彼此当这些事务是对同一段数据进行操作时,彼此之间就有可能产生相互的干扰情况。之间就有可能产生相互的干扰情况。10并发操作所带来的数据不一致情况有:并发操作所带来的数据不一致情况有:丢失修改、不可重复读丢失修改、不可重复读 读读“脏脏”数据、产生数据、产生
10、“幽灵幽灵”数据数据1 1、丢失数据修改、丢失数据修改 指两个事务指两个事务T1T1和和T2T2读入同一数据并进读入同一数据并进行修改,行修改,T2T2提交的结果破坏了提交的结果破坏了T1T1提交的结提交的结果,导致果,导致T1T1的修改被的修改被T2T2覆盖了。覆盖了。11122 2、读、读“脏数据脏数据”指一个事务读取了某个失败事务运行过程中的数据。指一个事务读取了某个失败事务运行过程中的数据。133 3、不可重复读、不可重复读 144 4、产生、产生“幽灵幽灵”数据数据 实际属于不可重复读的范畴。指当事务实际属于不可重复读的范畴。指当事务T1T1按一定条件从数据库中读取了某些数据记按一定
11、条件从数据库中读取了某些数据记录后,事务录后,事务T2T2删除了其中的部分记录,或者删除了其中的部分记录,或者在其中添加了部分记录,则当在其中添加了部分记录,则当T1T1再次按相同再次按相同条件读取数据时,发现其中少了(对删除)条件读取数据时,发现其中少了(对删除)或多了(对插入)一些记录。这样的数据对或多了(对插入)一些记录。这样的数据对T1T1来说就是来说就是“幽灵幽灵”数据数据或称或称“幻影幻影”数据数据。15二、并发控制措施二、并发控制措施 并发控制的主要方式是封锁机制,即并发控制的主要方式是封锁机制,即加锁加锁(LockingLocking)。加锁就是限制事务内和事务外对数据的操作。
12、加锁就是限制事务内和事务外对数据的操作。所谓所谓加锁加锁就是就是事务事务T T在操作某个数据之前,在操作某个数据之前,先向系统发出请求,封锁其所要使用的数据。先向系统发出请求,封锁其所要使用的数据。加锁后事务加锁后事务T T对要操作的数据具有了一定的控制对要操作的数据具有了一定的控制权,在事务权,在事务T T释放它的锁之前,其他事务不能操释放它的锁之前,其他事务不能操作这些数据作这些数据。16基本的锁类型有两种:基本的锁类型有两种:排它锁排它锁(也称为(也称为X X锁)锁)和和共享锁共享锁(也称(也称S S锁)。锁)。共享锁共享锁:若事务:若事务T T对数据对象对数据对象A A加了加了S S锁
13、,锁,则事务则事务T T可以读可以读A A,但不能修改但不能修改A A,其它事其它事务只能再务只能再对对A A加加S S锁,而不能加锁,而不能加X X锁,直到锁,直到T T释放释放了了A A上的上的S S锁。锁。排它锁排它锁:若事务:若事务T T对数据对象对数据对象A A加了加了X X锁,锁,则允许则允许T T读取和修改读取和修改A A,但不允许其它事但不允许其它事务再对务再对A A加任何类型的锁和进行任何操作。加任何类型的锁和进行任何操作。17排它锁和共享锁的相容矩阵排它锁和共享锁的相容矩阵 T2 T1XS无锁无锁XNONOYESSNOYESYES无锁无锁YESYESYES18三、封锁协议三
14、、封锁协议 对封锁方式规定不同的规则,就形成了各对封锁方式规定不同的规则,就形成了各种不同级别的封锁协议。种不同级别的封锁协议。1 1、一级封锁协议、一级封锁协议 一级封锁协议是:一级封锁协议是:对事务对事务T T要修改的数据加要修改的数据加X X锁,直到事务结束(包括正常结束和非正常结锁,直到事务结束(包括正常结束和非正常结束)时才释放束)时才释放。一级封锁协议可以一级封锁协议可以防止丢失修改防止丢失修改,但,但不能不能保证可重复读保证可重复读和和不读不读“脏脏”数据数据。19t1t2t3 t4事务事务T1时间时间事务事务T2(1)对)对A加加X锁锁 获得获得(2)读)读A16(3)要对要对
15、A加加X锁锁等待等待(4)修改)修改AA1 A15t6t7t8 t5(5)释放)释放A对对X的的 锁锁(6)(7)(8)(9)等待等待获得获得A对对X的锁的锁读读A15修改修改AA4写回写回A11释放释放A对对X的的锁锁202 2、二级封锁协议、二级封锁协议 二级封锁协议是:二级封锁协议是:一级封锁协议加上事务一级封锁协议加上事务T T对要读取的数据加对要读取的数据加S S锁,读完后即释放锁,读完后即释放S S锁锁。二级封锁协议除了可以二级封锁协议除了可以防止丢失修改防止丢失修改外,外,还可以还可以防止读防止读“脏脏”数据数据。但在二级封锁协。但在二级封锁协议议协议中,由于事务协议中,由于事务
16、T T读完数据即释放读完数据即释放S S锁,因锁,因此,此,不能保证可重复读数据不能保证可重复读数据。21t1t2t3t4事务事务T1时间时间事务事务T2(1)对)对C加加X锁锁 获得获得(2)读)读C50(3)求)求CC2 写回写回C100要对要对C加加S锁等待锁等待(4)图66t6t7t8t5(5)回滚)回滚(6)释放)释放C锁锁(7)(8)(9)等待等待等待等待获得获得C的的S锁锁读读C50释放释放C的的S锁锁223 3、三级封锁协议、三级封锁协议 三级封锁协议是:三级封锁协议是:一级封锁协议加上事务一级封锁协议加上事务T T对要读取的数据加对要读取的数据加S S锁,并直到事务结束才锁,
17、并直到事务结束才释放释放。三级封锁协议除了可以三级封锁协议除了可以防止丢失修改防止丢失修改和和不不读读“脏脏”数据数据之外,还进一步之外,还进一步防止了不可重防止了不可重复复读读。23t1t2t3t4事务事务T1时间时间事务事务T2(1)对)对A、B分别分别 加加S锁锁 获得获得(2)读)读A50 B100 求求AB150(3)等待等待(4)读)读A50 B100求求AB150图67t6t7t8t5(5)将和值写入)将和值写入(6)释放)释放A锁锁 释放释放B锁锁(7)(8)(9)等待等待等待等待获得获得B的的X锁锁读读B100写回写回B200要对要对B加加X锁等待锁等待t9释放对释放对B的的
18、X锁锁24三个封锁协议的主要区别在于什么操作需要三个封锁协议的主要区别在于什么操作需要申请封锁,以及何时释放锁。申请封锁,以及何时释放锁。封锁封锁协议协议X X锁锁(对写(对写数据)数据)S S锁(对只锁(对只读数据)读数据)不丢失不丢失修改修改(写)(写)不读脏数不读脏数据(读)据(读)可重复读可重复读(读)(读)一级一级事务全事务全程加锁程加锁 不加不加 二级二级事务全事务全程加锁程加锁 事务开始加,事务开始加,读完即放读完即放 三级三级事务全事务全程加锁程加锁 事务全程加事务全程加锁锁 25四、死锁四、死锁t1t2t3t4事务事务T1时间时间事务事务T2(1)对对R1加锁加锁(2)(3)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 玉洁 第二
限制150内