第82章数据库保护技术并发

上传人:汽*** 文档编号:591482863 上传时间:2024-09-17 格式:PPT 页数:48 大小:923.03KB
返回 下载 相关 举报
第82章数据库保护技术并发_第1页
第1页 / 共48页
第82章数据库保护技术并发_第2页
第2页 / 共48页
第82章数据库保护技术并发_第3页
第3页 / 共48页
第82章数据库保护技术并发_第4页
第4页 / 共48页
第82章数据库保护技术并发_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《第82章数据库保护技术并发》由会员分享,可在线阅读,更多相关《第82章数据库保护技术并发(48页珍藏版)》请在金锄头文库上搜索。

1、 江苏科技大学江苏科技大学 数据库系统概论数据库系统概论An Introduction to Database System第八章第八章 数据库保护技术数据库保护技术An Introduction to Database System第四章第四章 数据库安全性数据库安全性8.1 数据库的安全性及数据库的安全性及SQL Server的安全管理的安全管理 8.2 数据库完整性及数据库完整性及SQL Server的完整性控制的完整性控制8.3 数据库并发控制及数据库并发控制及SQL Server并发控制并发控制8.4 数据库恢复技术与数据库恢复技术与SQL Server数据恢复机制数据恢复机制An

2、Introduction to Database System问题的产生问题的产生v多用户数据库系统的存在 允许多个用户同时使用的数据库系统n飞机定票数据库系统n银行数据库系统 特点:在同一时刻并发运行的事务数可达数百个 An Introduction to Database System问题的产生(续)问题的产生(续)v不同的多事务执行方式不同的多事务执行方式 (1 1)串行执行)串行执行(2 2)并发执行)并发执行(3)并行方式(多处理机)并行方式(多处理机)T1T2T3事务的串行执行方式An Introduction to Database System问题的产生(续)问题的产生(续)v

3、事务并发执行带来的问题事务并发执行带来的问题多多个个事事务务同同时时存存取取同同一一数数据据的的情情况况时时,可可能能会会存存取取和和存存储不正确储不正确的数据的数据v数据库的并发控制:数据库的并发控制:控控制制数数据据库库,防防止止多多用用户户并并发发使使用用数数据据库库时时造造成成数数据据错错误误和和程序运行错误,保证程序运行错误,保证数据的完整性数据的完整性。 An Introduction to Database System8.3 数据库并发控制及数据库并发控制及SQL Server并发控制并发控制8.3.1 8.3.1 事务及并发控制的基本概念事务及并发控制的基本概念8.3.2 8

4、.3.2 封锁及封锁协议封锁及封锁协议8.3.3 8.3.3 封锁出现的问题及解决方法封锁出现的问题及解决方法8.3.4 8.3.4 SQLServerSQLServer的并发控制(了解,不考核)的并发控制(了解,不考核)An Introduction to Database System8.3.1 事务及并发控制的基本概念v1、事务的概念和特征v2、事务并发操作可能产生的数据不一致的问题An Introduction to Database System1、事务的概念和特征、事务的概念和特征v1. 事务的概念事务的概念事务:是用户定义的一个数据库操作序列,这些操作要么全做要事务:是用户定义的

5、一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。么全不做,是一个不可分割的工作单位。一个程序中可以包含多个事务一个程序中可以包含多个事务在在SQLSQL语言中,定义事务的语句有三条:语言中,定义事务的语句有三条: BEGIN TRANSACTIONBEGIN TRANSACTION; COMMITCOMMIT; ROLLBACKROLLBACK;An Introduction to Database System1、事务的概念和特征、事务的概念和特征v定义方式:v BEGIN TRANSACTION BEGIN TRANSACTION SQL 语句1 SQL 语句1

6、SQL 语句2 SQL 语句2 。 。 COMMIT ROLLBACK提交提交回滚回滚An Introduction to Database System1、事务的概念和特征(续)、事务的概念和特征(续)v2. 事务的事务的ACID特性特性:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持续性(Durability )An Introduction to Database System1、事务的概念和特征(续)、事务的概念和特征(续)v3、事务、事务特性遭破坏的原因特性遭破坏的原因1 1)多个事务并发运行时,不同事务的交叉执行(隔离性)多个事务并发运行

7、时,不同事务的交叉执行(隔离性)2 2)事务在运行过程中被强制终止(原子性、一致性)事务在运行过程中被强制终止(原子性、一致性)v事务处理的两个工作:事务处理的两个工作:并发控制任务(并发控制任务(8 8、3 3小节)小节)保证事务的隔离性,确保数据库的一致性。保证事务的隔离性,确保数据库的一致性。数据库恢复任务(数据库恢复任务(8 8、4 4小节)小节)保证事务的原子性、一致性。保证事务的原子性、一致性。An Introduction to Database System8.3.1 事务及并发控制的基本概念v1、事务的概念和特征v2、事务并发操作可能产生的数据不一致的问题An Introdu

8、ction to Database SystemT1的修改被的修改被T2覆盖了!覆盖了!2、事务并发操作可能产生的数据不一致的问题、事务并发操作可能产生的数据不一致的问题 例例 飞机订票系统中的一个活动序列飞机订票系统中的一个活动序列 甲售票点甲售票点( (甲事务甲事务) )读出某航班的机票余额读出某航班的机票余额A A,设,设A=20A=20; 乙售票点乙售票点( (乙事务乙事务) )读出同一航班的机票余额读出同一航班的机票余额A A,也为,也为2020; 甲售票点卖出一张机票,修改余额甲售票点卖出一张机票,修改余额AA-1AA-1,所以,所以A A为为1919,把,把A A写回写回数据库;

9、数据库; 乙售票点也卖出一张机票,修改余额乙售票点也卖出一张机票,修改余额AA-1AA-1,所以,所以A A为为1919,把,把A A写写回数据库回数据库 n结果明明卖出两张机票,数据库中机票余额只减少结果明明卖出两张机票,数据库中机票余额只减少1 1v这种情况称为数据库的不一致性,是由并发操作引起的。(隔离性)这种情况称为数据库的不一致性,是由并发操作引起的。(隔离性)An Introduction to Database Systemv并发操作时,甲、乙两个事务的操作序列的调度是随机的。并发操作时,甲、乙两个事务的操作序列的调度是随机的。v并发操作带来的数据不一致性,主要包括:并发操作带来

10、的数据不一致性,主要包括:丢失修改(丢失修改(Lost UpdateLost Update)不可重复读(不可重复读(Non-repeatable ReadNon-repeatable Read)读读“脏脏”数据(数据(Dirty ReadDirty Read)2、事务并发操作可能产生的数据不一致的问题、事务并发操作可能产生的数据不一致的问题An Introduction to Database System1). 丢失修改丢失修改v两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失。v上面飞机订票例子就属此类 An Introduction to D

11、atabase System丢失修改(续)丢失修改(续)T1T2R(A)=16AA-1W(A)=15W丢失修改R(A)=16AA-1W(A)=15An Introduction to Database System2 ). 不可重复读不可重复读v不可重复读是指:事务T1读取数据后,事务T2 执行更新操作,使T1无法再现前一次读取结果。An Introduction to Database System不可重复读(续)不可重复读(续)v不可重复读包括三种情况:(1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值 An Introduction to

12、Database System不可重复读(续)不可重复读(续)nT1读取B=100进行运算nT2读取同一数据B,对其进行修改后将B=200写回数据库。nT1为了对读取值校对重读B,B已为200,与第一次读取值不一致 T1T2R(A)=50R(B)=100求和=150R(B)=100BB*2(B)=200R(A)=50R(B)=200和=250(验算不对)不可重复读 例如:An Introduction to Database System不可重复读(续)不可重复读(续)(2)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记

13、录消失了 (3)事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。 后两种不可重复读有时也称为幻影现象(Phantom Row)An Introduction to Database System3 ). 读读“脏脏”数据数据 读“脏”数据是指:n事务T1修改某一数据,并将其写回磁盘n事务T2读取同一数据后,T1由于某种原因被撤销n这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致nT2读到的数据就为“脏”数据,即不正确的数据 An Introduction to Database System读读“脏

14、脏”数据(续)数据(续)T1T2R(C)=100CC*2W(C)=200R(C)=200ROLLBACKC恢复为100例如例如读“脏”数据 nT1将C值修改为200,T2读到C为200nT1由于某种原因撤销,其修改作废,C恢复原值100n这时T2读到的C为200,与数据库内容不一致,就是“脏”数据An Introduction to Database Systemv数据不一致性:由于并发操作破坏了事务的隔离性v并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性 2、事务并发操作可能产生的数据不一致的问题、事务并发操作可能产生的数据不一致的

15、问题An Introduction to Database Systemv并发控制的主要技术封锁(Locking)时间戳(Timestamp)乐观控制法v商用的DBMS一般都采用封锁方法 2、事务并发操作可能产生的数据不一致的问题、事务并发操作可能产生的数据不一致的问题An Introduction to Database System8.3 数据库并发控制及数据库并发控制及SQL Server并发控制并发控制8.3.1 8.3.1 事务及并发控制的基本概念事务及并发控制的基本概念8.3.2 8.3.2 封锁及封锁协议封锁及封锁协议8.3.3 8.3.3 封锁出现的问题及解决方法封锁出现的问题

16、及解决方法An Introduction to Database System8.3.2 封锁及封锁协议v封锁是使事务对它要操作的数据有一定的控制能力。封锁是使事务对它要操作的数据有一定的控制能力。v封锁具有封锁具有3个环节:个环节:申请加锁申请加锁,即事务在操作前要对它将使用的数据提出加锁,即事务在操作前要对它将使用的数据提出加锁请求;请求;获得锁获得锁,即当条件成熟时,系统允许事务对数据加锁,从,即当条件成熟时,系统允许事务对数据加锁,从而事务获得数据的控制权;而事务获得数据的控制权;释放锁释放锁,即完成操作后事务放弃数据的控制权。,即完成操作后事务放弃数据的控制权。An Introduc

17、tion to Database System8.3.2 封锁及封锁协议v1、锁的类型v2、封锁协议An Introduction to Database System8.3.2 封锁及封锁协议 T1 T2XS-XNNYSNYY-YYYv1、锁的类型排它锁(Exclusive Locks,简记为X锁)共享锁(Share Locks,简记为S锁)An Introduction to Database System8.3.2 封锁及封锁协议v2、封锁协议在对数据对象加锁时,需要约定一些规则,如,何时申请在对数据对象加锁时,需要约定一些规则,如,何时申请X X锁或锁或S S锁、持锁时间、何时释放等。

18、这些规则统称为封锁协议。锁、持锁时间、何时释放等。这些规则统称为封锁协议。 v(1)(1)一级封锁协议。一级封锁协议。事务事务T T在修改数据之前必须先对其加在修改数据之前必须先对其加X X锁,直到事务结束才释放。锁,直到事务结束才释放。v( (2)2)二级封锁协议。二级封锁协议。事务事务T T对要修改数据必须先加对要修改数据必须先加X X锁,直到事务结束才释放锁,直到事务结束才释放X X锁;锁;对要读取的数据必须先加对要读取的数据必须先加S S锁,读完后即可释放锁,读完后即可释放S S锁。锁。v(3)(3)三级封锁协议。三级封锁协议。事务事务T T在读取数据之前必须先对其加在读取数据之前必须

19、先对其加S S锁,锁,在要修改数据之前必须先对其加在要修改数据之前必须先对其加X X锁,锁,直到事务结束后才释放所有锁。直到事务结束后才释放所有锁。An Introduction to Database System使用封锁机制解决丢失修改问题使用封锁机制解决丢失修改问题T1T2 Xlock A R(A)=16Xlock A AA-1等待等待 W(A)=15等待等待 Commit等待等待 Unlock A等待等待获得获得Xlock AR(A)=15AA-1W(A)=14CommitUnlock A例:例:n事务事务T1T1在读在读A A进行修改之前先进行修改之前先对对A A加加X X锁锁n当当

20、T2T2再请求对再请求对A A加加X X锁时被拒绝锁时被拒绝nT2T2只能等待只能等待T1T1释放释放A A上的锁后上的锁后T2T2获得对获得对A A的的X X锁;这时锁;这时T2T2读到读到的的A A已经是已经是T1T1更新过的值更新过的值1515n避免了丢失避免了丢失T1T1的更新。的更新。没有丢失修改没有丢失修改一级一级封锁协议。封锁协议。An Introduction to Database System使用封锁机制解决读使用封锁机制解决读“脏脏”数据问数据问题题T1T2XlockCR(C)=100CC*2W(C)=200SlockC等待ROLLBACK等待(C恢复为100)等待Unl

21、ockC等待获得获得Slock CR(C)=100CommitCUnlockC例例n事务事务T1T1在对在对C C进行修改之前,先进行修改之前,先对对C C加加X X锁,修改其值后写回磁盘锁,修改其值后写回磁盘nT2T2请求在请求在C C上加上加S S锁,因锁,因T1T1已在已在C C上加了上加了X X锁,锁,T2T2只能等待只能等待nT1T1因某种原因被撤销,因某种原因被撤销,C C恢复为恢复为原值原值100100nT1T1释放释放C C上的上的X X锁后锁后T2T2获得获得C C上的上的S S锁,读锁,读C=100C=100。n避免了避免了T2T2读读“脏脏”数据数据不读不读“脏脏”数据数

22、据 An Introduction to Database System使用封锁机制解决不可重复读问题使用封锁机制解决不可重复读问题T1T2SlockASlockBR(A)=50R(B)=100求和=150XlockB等待等待R(A)=50等待R(B)=100等待求和=150等待Commit等待UnlockA等待UnlockB等待获得获得XlockBR(B)=100BB*2W(B)=200CommitUnlockBn事务T1在读A,B之前,先对A、B加S锁;n当T2为修改B,而申请对B的X锁时,被拒绝nT1为验算再读A,B,这时读出的B仍是100,求和结果仍为150,即可重复读nT1结束才释放

23、A,B上的S锁。T2才获得对B的X锁可重复读可重复读三级三级封锁协议。封锁协议。An Introduction to Database System8.3.2 封锁及封锁协议X锁S锁一致性保证操作结束释放事务结束释放操作结束释放事务结束释放不丢失修改不读“脏”数据可重复读一 级 协议二 级 协议三 级 协议v三级协议的区别:什么操作需要采用何种锁,以及何时释放锁三级协议的区别:什么操作需要采用何种锁,以及何时释放锁。An Introduction to Database System8.3 数据库并发控制及数据库并发控制及SQL Server并发控制并发控制8.3.1 8.3.1 事务及并发控

24、制的基本概念事务及并发控制的基本概念8.3.2 8.3.2 封锁及封锁协议封锁及封锁协议8.3.3 8.3.3 封锁出现的问题及解决方法封锁出现的问题及解决方法An Introduction to Database System8.3.3 8.3.3 封锁出现的问题及解决方法封锁出现的问题及解决方法v封锁技术好处:可以有效地解决并行操作的一致性问题。缺点:带来一些新的问题:1、活锁2、死锁3、并发调度的可串行性An Introduction to Database System1.活锁活锁T2有可能永远等待。有可能永远等待。这就是这就是活锁活锁的情形的情形v解决方法?解决方法?采用先来先服务的

25、策略采用先来先服务的策略An Introduction to Database System2. 死锁死锁T T1 1T T2 2lock Rlock R1 1Lock RLock R2 2Lock RLock R2 2. .等待等待等待等待Lock RLock R1 1等待等待等待等待等待等待等待等待解决方法:解决方法:1. 1. 预防死锁预防死锁2. 2. 死锁的诊断与解除死锁的诊断与解除An Introduction to Database System2. 死锁死锁1)、预防死锁的方法预防死锁的方法v 一次封锁法一次封锁法要求每个事务必须一次将所有要用的数据全部加锁,否则不能继续执行v

26、顺序封锁法顺序封锁法预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。T T1 1T T2 2lock Rlock R1 1Lock RLock R2 2Lock RLock R2 2等待等待等待等待等待等待. .等待等待Unlock Unlock R R2 2Unlock RUnlock R1 1等待等待Lock RLock R1 1Unlock Unlock R R2 2Unlock RUnlock R1 1T T1 1T T2 2lock Rlock R1 1Lock RLock R1 1等待等待Lock RLock R2 2. .等待等待等待等待等待等待ULockULock

27、 R R1 1. .ULockULock R R2 2. .Lock RLock R2 2ULockULock R R1 1ULockULock R R2 2. .An Introduction to Database System2. 死锁死锁v2)死锁的诊断与解除死锁的诊断与解除DBMSDBMS在解决死锁的问题上在解决死锁的问题上更普遍采用更普遍采用的是:诊断并解除死锁的是:诊断并解除死锁的方法。的方法。与操作系统类似。与操作系统类似。An Introduction to Database System3、并发调度的可串行性、并发调度的可串行性vDBMS对并发事务不同的调度可能会产生不同的

28、结果v什么样的调度是正确的?调度的结果与事务在没有受到其他事务干扰的情况下的执行结果是否一致。v准则:多个事务并发执行的结果与按串行执行的结果相同,这种调度策略称为可串串行化行化(Serializable)的调度(即,正确的)。反之称为不可串行化调度不可串行化调度 (即,错误的) 。An Introduction to Database System3、并发调度的可串行性、并发调度的可串行性例现在有两个事务,分别包含下列操作:事务T1:读B;A=B+1;写回A事务T2:读A;B=A+1;写回B现给出对这两个事务不同的调度策略 An Introduction to Database System

29、3、并发调度的可串行性、并发调度的可串行性T1T2Slock BY=R(B)=2Unlock BXlock AA=Y+1=3W(A)Unlock An假设假设A、B的初值均为的初值均为2。n按按T1T2次序执行结果次序执行结果为为A=3,B=4 n串行调度策略串行调度策略n正确的调度正确的调度 Slock AX=R(A)=3Unlock AXlock BB=X+1=4W(B)Unlock BAn Introduction to Database System3、并发调度的可串行性、并发调度的可串行性n假设A、B的初值均为2。nT2T1次序执行结果为B=3,A=4 n串行调度策略n正确的调度T1

30、T2SlockBY=R(B)=3UnlockBXlockAA=Y+1=4W(A)UnlockASlockAX=R(A)=2UnlockAXlockBB=X+1=3W(B)UnlockBAn Introduction to Database System3、并发调度的可串行性、并发调度的可串行性T1T2Slock BY=R(B)=2Unlock BXlock AA=Y+1=3Slock AW(A)等待等待Unlock A等待等待等待等待X=R(A)=3Unlock AXlock BB=X+1=4W(B)Unlock B可串行化的调度 n执行结果与串行调度执行结果与串行调度(a)的执行结果相同的执

31、行结果相同n是是正确正确的调度的调度 An Introduction to Database System3、并发调度的可串行性、并发调度的可串行性T1T2SlockBY=R(B)=2UnlockBSlockAXlockA等待X=R(A)=2获得锁UnlockAA=Y+1=3XlockBW(A) UnlockAB=X+1=3W(B)UnlockBn执行结果与(a)、(b)的结果都不同n是错误错误的调度An Introduction to Database System3、并发调度的可串行性、并发调度的可串行性v如何保证调度的可串行化?如何保证调度的可串行化?两段锁协议:所有事物必须分两个阶段对

32、数据进行加锁和解锁两段锁协议:所有事物必须分两个阶段对数据进行加锁和解锁1) 1) 对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。2) 2) 释放一个封锁之后,事务不再申请并获得对该数据的封锁。释放一个封锁之后,事务不再申请并获得对该数据的封锁。例:遵循两段锁协议的事务举例例:遵循两段锁协议的事务举例SLockSLock A , A , SLockSLock B , B , XLockXLock C , C , ULockULock B , B , ULockULock A , A , ULockULock C C例

33、:不遵循两段锁协议的事务举例例:不遵循两段锁协议的事务举例SLockSLock A , A , USLockUSLock A A , , SLockSLock B , B , XLockXLock C , C , ULockULock B , B , ULockULock C CAn Introduction to Database System3、并发调度的可串行性、并发调度的可串行性v注意:注意:两段锁协议是保证可串行化的两段锁协议是保证可串行化的充分条件,但不是必要条件;充分条件,但不是必要条件;两段锁协议,与一次封锁不同;两段锁协议,与一次封锁不同;一次封锁法遵循两段锁协议;一次封锁法

34、遵循两段锁协议;遵循两段锁协议的事务也可能遵循两段锁协议的事务也可能发生死锁。(死锁检测、解除)发生死锁。(死锁检测、解除)T1T2Slock BY=R(B)=2Unlock BXlock AA=Y+1=3Slock AW(A)等待等待Unlock A等待等待等待等待X=R(A)=3Unlock AXlock B是否符合两段锁协是否符合两段锁协议,是否可串行化议,是否可串行化B=X+1=4W(B)Unlock BT T1 1T T2 2lock Rlock R1 1Lock RLock R2 2Lock RLock R2 2等待等待等待等待等待等待. .等待等待Unlock Unlock R

35、R2 2Unlock RUnlock R1 1此乃一次封锁,此乃一次封锁,是否遵循两段是否遵循两段锁协议?锁协议?等待等待Lock RLock R1 1Unlock Unlock R R2 2Unlock RUnlock R1 1T T1 1T T2 2lock Rlock R1 1Lock RLock R2 2Lock RLock R2 2. .等待等待等待等待Lock RLock R1 1等待等待等待等待等待等待等待等待是否遵循两段锁是否遵循两段锁协议协议? ?是否死锁?是否死锁?An Introduction to Database System 下课了。下课了。休息一会儿。休息一会儿。An Introduction to Database System

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号