第6章 数据库的保护.ppt
《第6章 数据库的保护.ppt》由会员分享,可在线阅读,更多相关《第6章 数据库的保护.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 数据的完整性约束;数据的完整性约束;事务并发控制;事务并发控制;数据的安全性;数据的安全性;数据恢复;数据恢复;注:注:数据库的保护问题由数据库数据库的保护问题由数据库共享引起来的。共享引起来的。主要内容:主要内容:第第6章章 数据库的保护数据库的保护重点:重点:数据的完整性约束数据的完整性约束 事务并发控制。事务并发控制。6.1-6.2 事务的并发控制事务的并发控制防防止止用用户户程程序序对对共共享享数数据据操操作作的的互互相相干干扰扰,保保证证DB中中数数据据正正确确性性不受到破坏。不受到破坏。一、基本概念一、基本概念并发控制是以事务为单位的。并发控制是以事务为单位的。1、事务(、事务(
2、Transaction)事事务务:一一个个事事务务就就是是一一个个DB应应用用程程序序的的一一次次执执行行过过程程。(类类似似OS中的中的“进程进程”的概念)的概念)事务的定义:事务的定义:在应用程序中,事务以在应用程序中,事务以BEGINTRANSACTION语句开始语句开始COMMIT语语句句或或ROLLBACK语语句句结结束。束。一一个个事事务务可可以以是是一一组组SQL语语句句,一一条条SQL语语句句或或整整个个程程序序。通通常,一个应用程序包含多个常,一个应用程序包含多个事务。事务。2、事务的特性(、事务的特性(ACID性质)性质)原子性(原子性(Atomicity):):事务是不可
3、分割的最小工作单位,即具有事务是不可分割的最小工作单位,即具有整体执行性。(事务控制子系统完成)整体执行性。(事务控制子系统完成)一致性(或称正确性)一致性(或称正确性)(Consistency):一个事务单独执行的结一个事务单独执行的结果将保证果将保证DB的一致性,即事务满足的一致性,即事务满足DB的完整性约束条件。的完整性约束条件。(完整性控制子系统完成完整性控制子系统完成)隔离性隔离性(Isolation):执行并发事务时,事务彼此隔离,即一个执行并发事务时,事务彼此隔离,即一个事务对事务对DB变更的结果必须结束后,另一个事务才能存取。变更的结果必须结束后,另一个事务才能存取。(并发控制
4、子系统完成并发控制子系统完成)永久性永久性(Durability):正常结束后的事务结果在正常结束后的事务结果在DB中存储是永久中存储是永久的。若系统发生故障,也应保留这个事务执行的痕迹。的。若系统发生故障,也应保留这个事务执行的痕迹。(恢复子系统完成)(恢复子系统完成)保证事务永久性的实现:保证事务永久性的实现:事务的更新操作应在事务完成之前写入磁盘。事务的更新操作应在事务完成之前写入磁盘。事务的更新与写入磁盘这两个操作应保存足够的信息,足以事务的更新与写入磁盘这两个操作应保存足够的信息,足以使使DB系统在遇到故障后重新启动时重构更新操作。系统在遇到故障后重新启动时重构更新操作。二、事务并发
5、带来的问题二、事务并发带来的问题DB中中多多个个并并发发事事务务对对共共享享数数据据并并发发操操作作时时,如如果果不不加加以以控控制制会会产生数据的不一致性问题。产生数据的不一致性问题。数据的不一致性包括三类:数据的不一致性包括三类:丢失更新,丢失更新,不可重读,不可重读,读读“脏数据脏数据”。例如:飞机订票系统中的一个活动序列:例如:飞机订票系统中的一个活动序列:(1)甲售票点(甲事务)读出某航班的机票余额甲售票点(甲事务)读出某航班的机票余额A,设设A=16;(2)乙售票点(乙事务)读出同一航班的机票余额乙售票点(乙事务)读出同一航班的机票余额A,也为也为16;(3)甲甲售售票票点点卖卖出
6、出一一张张机机票票,修修改改余余额额A1A,A=15,把把A写写回回数据库数据库;(4)乙乙售售票票点点也也卖卖出出一一张张机机票票,修修改改余余额额A1A,A=15,把把A写写回数据库回数据库;结结果果说说明明,卖卖出出两两张张机机票票,但但数数据据库库中中的的机机票票余余额额只只减减少少1。这这种种现现象象称称为为DB的的丢丢失失更更新新。问问题题的的原原因因:没没有有控控制制它它们们的的并并发发操操作,使乙事务修改作,使乙事务修改A并回写,覆盖了甲事务的修改并回写,覆盖了甲事务的修改(丢失丢失)。丢失更新问题丢失更新问题如:如:步骤步骤 更新事务更新事务T1DB中的中的A值值更新事务更新
7、事务T21READ(A)1623READ(A)4A:=A-15A:=A16WRITE(A)715WRITE(A)不可重读的问题不可重读的问题:即读了过时的数据即读了过时的数据时间时间事务事务T1DB中的中的B值值事务事务T3t1t2t3t1:检索 读A=50 读B=100 求和=150t3:检索(验算)读A=50 读B=200 求和=250t2:读B=100 B:=B*2 回写B=200B“脏数据脏数据”的读出:即提交随后又被撤消的数据称为脏数据的读出:即提交随后又被撤消的数据称为脏数据步骤步骤更新事务更新事务T1DB中的中的A值值 读事务读事务T41502READ(A)3A:=A-104WR
8、ITE(A)540READ(A)6ROLLBACK750恢复事事务务的的并并发发控控制制:使使用用正正确确的的方方法法调调度度并并发发操操作作,避避免免造造成成数数据据的不一致性,使一个事务的执行不受其它事务的干扰。的不一致性,使一个事务的执行不受其它事务的干扰。采用采用封锁控制技术封锁控制技术解决并发操作带来的数据不一致问题。解决并发操作带来的数据不一致问题。三、封锁技术三、封锁技术1、锁的基本类型、锁的基本类型排排他他锁锁(简简记记X封封锁锁;写写锁锁)和和共共享享锁锁(简简记记S封封锁锁;读读锁锁)。封封锁锁:指指事事务务向向系系统统发发出出请请求求,对对某某个个数数据据对对象象(通通常
9、常指指记记录录)加锁(加锁(LOCK),),其它事务不能其它事务不能更新更新其封锁数据,直到释放为止。其封锁数据,直到释放为止。2、封锁的工作原理、封锁的工作原理封锁的工作原理封锁的工作原理:若若事事务务T对对数数据据R加加了了X封封锁锁,则则所所有有别别的的事事务务对对R的的封封锁锁请请求求都都必必须须等等待待,直直到到T释释放放锁锁为为止止。这这就就保保证证了了其其他他事事务务在在T释释放放R上上的的X锁之前不能对锁之前不能对R做做读和修改读和修改。若若事事务务T对对数数据据R加加了了S封封锁锁,则则别别的的事事务务对对R还还可可请请求求S封封锁锁,而而不不能能对对R请请求求X封封锁锁,必
10、必须须等等待待到到T释释放放S封封锁锁。这这就就保保证证了了其其他他事事务可读务可读R,但在但在T释放释放R上的上的S锁之前不能对锁之前不能对R做任何修改。做任何修改。共共读读,不共,不共写写事务执行事务执行DB操作时都必先请求相应的封锁(一般由操作时都必先请求相应的封锁(一般由DBMS自动隐自动隐含执行):含执行):对读请求对读请求S封锁,对更新(插、删、改)请求封锁,对更新(插、删、改)请求X封锁。封锁。事务一直占有获得的锁直到结束(事务一直占有获得的锁直到结束(COMMIT或或ROLLBACK)时时释放释放。排他锁排他锁X和共享锁和共享锁S的控制关系:的控制关系:T1T2XSXNNSNY
11、3,封锁粒度,封锁粒度 封锁粒度:指封锁对象的大小。对象可以是逻辑单元(如:封锁粒度:指封锁对象的大小。对象可以是逻辑单元(如:属性属性值,元组,关系,索引项,或整个数据库值,元组,关系,索引项,或整个数据库),也可以是物理单元),也可以是物理单元(页:数据页和索引页,块页:数据页和索引页,块等)。等)。封锁粒度与系统的并发度和并发控制的开销密切相关:封锁粒度与系统的并发度和并发控制的开销密切相关:封锁的粒度越大,封锁的对象就越少,并发度也就越小,但同时封锁的粒度越大,封锁的对象就越少,并发度也就越小,但同时系统的开销也就越小;反之,封锁的粒度越小,并发度就越高,系统的开销也就越小;反之,封锁
12、的粒度越小,并发度就越高,系统的开销也就越大。系统的开销也就越大。4,用锁进行并发控制,用锁进行并发控制用锁进行并发控制,除了锁的机制外,还要有一些封锁规则用锁进行并发控制,除了锁的机制外,还要有一些封锁规则封锁协议。封锁协议。协议:所有事务都必须遵循的关于基本操作执行顺序的一种限协议:所有事务都必须遵循的关于基本操作执行顺序的一种限制。制。封锁协议包括:保证数据一致性的三级封锁协议,保证并发可封锁协议包括:保证数据一致性的三级封锁协议,保证并发可串行化的两段封锁协议和避免死锁的封锁协议。串行化的两段封锁协议和避免死锁的封锁协议。四,四,保证数据一致性的三级封锁协议:保证数据一致性的三级封锁协
13、议:1)1级封锁协议:事务级封锁协议:事务T在修改数据在修改数据R之前必须先对其加之前必须先对其加X锁,锁,直到事务结束才释放直到事务结束才释放(commit或或rollback).1级封锁协议可防止丢失修改,并保证事务级封锁协议可防止丢失修改,并保证事务T是可恢复的是可恢复的。时间时间事务事务T1DB中的中的A值值16事务事务T2 t1 lock X(A)read(A)t2 lock X(A)t3 A=A-1 等待 write(A)A15 Commit ,Unlock A ,t4 lock X(A)read(A)A=A-1 write(A)A14 Commit Unlock AA 2)2级封
14、锁协议:级封锁协议:1级封锁协议加上事务级封锁协议加上事务T在读取数据在读取数据R之前必须之前必须先对其加先对其加S锁,锁,读完读完后释放后释放S锁。锁。2级封锁协议除可防止丢失修改,还可防止读级封锁协议除可防止丢失修改,还可防止读“脏数据脏数据”。没有没有丢失修改丢失修改时间时间 事务事务T1DB中的中的c值值100事务事务T2 t1 lock X(A)read(A)A:=A-10 write(A)A=190 t2 lock s(A)t3 Rollback 恢复A=100 等待 Unlock A .t4 lock s(A)read(A)A=100c A不再读不再读“脏数据脏数据”3)3级封锁
15、协议:级封锁协议:1级封锁协议加上事务级封锁协议加上事务T在读取数据在读取数据R之前之前 必须先对其加必须先对其加S锁,直到事务锁,直到事务结束结束才释放。才释放。3级级封封锁锁协协议议除除可可防防止止丢丢失失修修改改和和防防止止读读“脏脏数数据据”外外,可可以以防防止不可重读。止不可重读。更新事务更新事务T1DB中的中的A和和B值值50,100更新事务更新事务T2t1LOCKS(A)READ(A)LOCKS(B)READ(B)A+B150t2t3READ(A)READ(B)A+B=150CommitUnlockAUnlockBABLOCK X(B)WAIT WAIT WAITLOCK X(B
16、)READ(B)B=B*2Write(B)B=200死锁:两个或两个以上事务循环等待被同组中另一事务锁住的数据死锁:两个或两个以上事务循环等待被同组中另一事务锁住的数据单元的现象称为死锁。单元的现象称为死锁。事务事务T1事务事务T21LOCKX(A)2LOCKX(B)3READ(A)4READ(B)5LOCKX(B)6WAIT7WAITLOCKX(A)8WAITWAIT发生死锁发生死锁如:如:五五.事务控制中死锁的问题事务控制中死锁的问题六六.保证并发可串行化的两段封锁协议保证并发可串行化的两段封锁协议1、并发事务可串行化、并发事务可串行化问题:怎样的并发控制才能使一组交叉执行事务的结果是正确
17、问题:怎样的并发控制才能使一组交叉执行事务的结果是正确的呢?的呢?并发调度正确性标准是什么?并发调度正确性标准是什么?事务调度:事务调度:串行调度串行调度:多个事务依次执行:多个事务依次执行.并发调度并发调度:采用分时处理的方法,同时处理多个事务:采用分时处理的方法,同时处理多个事务的执行。的执行。并发事务可串行化并发事务可串行化:当一个并发调度的结果与某一串行调度的结:当一个并发调度的结果与某一串行调度的结果等价,则说该并发调度是可串行化的。果等价,则说该并发调度是可串行化的。注:串行调度与可串行化调度的区别:注:串行调度与可串行化调度的区别:串串行行调调度度是是事事务务顺顺序序调调度度的的
18、一一种种方方式式,可可串串行行化化调调度度是是衡衡量量并并发发调度正确性的标准。调度正确性的标准。“可可串串行行化化的的”不不是是调调度度本本身身“已已串串行行化化了了”,只只是是结结果果与与某某个个串行调度结果一样。串行调度结果一样。一一组组事事务务的的串串行行调调度度不不是是唯唯一一的的,因因而而可可串串行行化化的的调调度度也也不不是是唯唯一的。一的。例如,现有两个事务:例如,现有两个事务:T1:读读B;A=B+1;写回写回A;T2:读:读A;B=A+1;写回写回B;假设假设A的初值为的初值为10,B的初值为的初值为2。下面给出了对这两个事务。下面给出了对这两个事务的三种不同的调度策略。的
19、三种不同的调度策略。1)串行调度)串行调度事务事务T1:事务事务T2:读B=2;A=B+1;写回A=3;读读A=3;B=A+1;写回写回B=4;事务事务T1:事务事务T2:读A=10;B=A+1;写回B=11;读读B=11;A=B+1;写回写回A=12;串行调度串行调度 1 (T1-T2)串行调度串行调度 2 (T2-T1)串行调度串行调度 1和串行调度和串行调度 2为两种不同的串行调度为两种不同的串行调度,虽结果不同,虽结果不同,但它们都是正确的调度。但它们都是正确的调度。结结论论:可可串串行行化化调调度度是是事事务务并并发发执执行行的的正正确确性性准准则则,即即当当且且仅仅当当一组事务的并
20、发执行调度是可串行化的,才认为它们是正确的一组事务的并发执行调度是可串行化的,才认为它们是正确的。事务事务T1:事务事务T2:读B=2;读读A=10;A=B+1;写回A=3;B=A+1;写回写回B=11;事务事务T1:事务事务2:读B=2;等待 等待A=B+1;等待写回A=3;等待 读读A=3;B=A+1;写回写回B=4;2)不可串行化调度)不可串行化调度3)可串行化调度)可串行化调度 3)的调度结果与)的调度结果与1)的结果相同。的结果相同。2 2、两段封锁法、两段封锁法问问题题:怎怎样样的的封封锁锁,其其调调度度才才是是可可串串行行化化的的呢呢?最最简简单单的的方方法法采采用两段封锁法。用
21、两段封锁法。两段封锁法:就是事务遵循两段锁协议(简记两段封锁法:就是事务遵循两段锁协议(简记2PL)的调度方法。的调度方法。(1)两段封锁协议两段封锁协议2PL规定事务必须遵守的规则:规定事务必须遵守的规则:在对任何数据进行读写之前,事务首先要获得对该数据的封锁。在对任何数据进行读写之前,事务首先要获得对该数据的封锁。在释放一个封锁之后,事务不再申请获得任何其它封锁。在释放一个封锁之后,事务不再申请获得任何其它封锁。2PL要求将事务分成两个阶段:增生阶段和收缩阶段。要求将事务分成两个阶段:增生阶段和收缩阶段。增增生生阶阶段段(加加锁锁阶阶段段):事事务务可可以以申申请请封封锁锁,不不能能解解除
22、除任任何何已已取取得的封锁。得的封锁。收缩阶段(释放阶段):一旦事务释放封锁,以后不能申请新的收缩阶段(释放阶段):一旦事务释放封锁,以后不能申请新的封锁封锁。如:如:T1的封锁序列是:的封锁序列是:LOCKS(A)LOCKS(B)LOCKX(C)UNLOCK(B)UNLOCK(A)UNLOCK(C)T2的封锁序列是:的封锁序列是:LOCKS(A)UNLOCK(A)LOCKS(B)LOCKX(C)UNLOCK(C)UNLOCK(B)很明显:很明显:T1遵守两段封锁协议;遵守两段封锁协议;T2没有遵守两段封锁协议没有遵守两段封锁协议。(2)两段封锁法与可串行化调度的关系两段封锁法与可串行化调度的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 数据库的保护 数据库 保护
限制150内