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

上传人:夺命阿水 文档编号:751172 上传时间:2023-11-07 格式:PPT 页数:47 大小:1.76MB
返回 下载 相关 举报
第82章数据库保护技术并发.ppt_第1页
第1页 / 共47页
第82章数据库保护技术并发.ppt_第2页
第2页 / 共47页
第82章数据库保护技术并发.ppt_第3页
第3页 / 共47页
第82章数据库保护技术并发.ppt_第4页
第4页 / 共47页
第82章数据库保护技术并发.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

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

1、,数据库系统概论第八章 数据库保护技术,第四章 数据库安全性,8.1 数据库的安全性及SQL Server的安全管理 8.2 数据库完整性及SQL Server的完整性控制8.3 数据库并发控制及SQL Server并发控制8.4 数据库恢复技术与SQL Server数据恢复机制,问题的产生,多用户数据库系统的存在 允许多个用户同时使用的数据库系统飞机定票数据库系统银行数据库系统 特点:在同一时刻并发运行的事务数可达数百个,问题的产生(续),不同的多事务执行方式(1)串行执行(2)并发执行(3)并行方式(多处理机),事务的串行执行方式,问题的产生(续),事务并发执行带来的问题多个事务同时存取同

2、一数据的情况时,可能会存取和存储不正确的数据数据库的并发控制:控制数据库,防止多用户并发使用数据库时造成数据错误和程序运行错误,保证数据的完整性。,8.3 数据库并发控制及SQL Server并发控制,8.3.1 事务及并发控制的基本概念8.3.2 封锁及封锁协议8.3.3 封锁出现的问题及解决方法8.3.4 SQLServer的并发控制(了解,不考核),8.3.1 事务及并发控制的基本概念,1、事务的概念和特征2、事务并发操作可能产生的数据不一致的问题,1、事务的概念和特征,1.事务的概念事务:是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。一个程序中可

3、以包含多个事务在SQL语言中,定义事务的语句有三条:BEGIN TRANSACTION;COMMIT;ROLLBACK;,1、事务的概念和特征,定义方式:BEGIN TRANSACTION BEGIN TRANSACTION SQL 语句1 SQL 语句1 SQL 语句2 SQL 语句2。COMMIT ROLLBACK,提交,回滚,1、事务的概念和特征(续),2.事务的ACID特性:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持续性(Durability),1、事务的概念和特征(续),3、事务特性遭破坏的原因1)多个事务并发运行时,不同事务的交叉执行

4、(隔离性)2)事务在运行过程中被强制终止(原子性、一致性)事务处理的两个工作:并发控制任务(8、3小节)保证事务的隔离性,确保数据库的一致性。数据库恢复任务(8、4小节)保证事务的原子性、一致性。,8.3.1 事务及并发控制的基本概念,1、事务的概念和特征2、事务并发操作可能产生的数据不一致的问题,T1的修改被T2覆盖了!,2、事务并发操作可能产生的数据不一致的问题,例飞机订票系统中的一个活动序列 甲售票点(甲事务)读出某航班的机票余额A,设A=20;乙售票点(乙事务)读出同一航班的机票余额A,也为20;甲售票点卖出一张机票,修改余额AA-1,所以A为19,把A写回数据库;乙售票点也卖出一张机

5、票,修改余额AA-1,所以A为19,把A写回数据库 结果明明卖出两张机票,数据库中机票余额只减少1这种情况称为数据库的不一致性,是由并发操作引起的。(隔离性),并发操作时,甲、乙两个事务的操作序列的调度是随机的。并发操作带来的数据不一致性,主要包括:丢失修改(Lost Update)不可重复读(Non-repeatable Read)读“脏”数据(Dirty Read),2、事务并发操作可能产生的数据不一致的问题,1).丢失修改,两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失。上面飞机订票例子就属此类,丢失修改(续),丢失修改,R(A)=16,2

6、).不可重复读,不可重复读是指:事务T1读取数据后,事务T2 执行更新操作,使T1无法再现前一次读取结果。,不可重复读(续),不可重复读包括三种情况:(1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值,不可重复读(续),T1读取B=100进行运算T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致,不可重复读,例如:,不可重复读(续),(2)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失了(3)事务T

7、1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。后两种不可重复读有时也称为幻影现象(Phantom Row),3).读“脏”数据,读“脏”数据是指:事务T1修改某一数据,并将其写回磁盘事务T2读取同一数据后,T1由于某种原因被撤销这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致T2读到的数据就为“脏”数据,即不正确的数据,读“脏”数据(续),例如,读“脏”数据,T1将C值修改为200,T2读到C为200T1由于某种原因撤销,其修改作废,C恢复原值100这时T2读到的C为200,与数据库内容不一致,就是“脏

8、”数据,数据不一致性:由于并发操作破坏了事务的隔离性并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性,2、事务并发操作可能产生的数据不一致的问题,并发控制的主要技术封锁(Locking)时间戳(Timestamp)乐观控制法商用的DBMS一般都采用封锁方法,2、事务并发操作可能产生的数据不一致的问题,8.3 数据库并发控制及SQL Server并发控制,8.3.1 事务及并发控制的基本概念8.3.2 封锁及封锁协议8.3.3 封锁出现的问题及解决方法,8.3.2 封锁及封锁协议,封锁是使事务对它要操作的数据有一定的控制能力。封锁具有3个

9、环节:申请加锁,即事务在操作前要对它将使用的数据提出加锁请求;获得锁,即当条件成熟时,系统允许事务对数据加锁,从而事务获得数据的控制权;释放锁,即完成操作后事务放弃数据的控制权。,8.3.2 封锁及封锁协议,1、锁的类型2、封锁协议,8.3.2 封锁及封锁协议,1、锁的类型排它锁(Exclusive Locks,简记为X锁)共享锁(Share Locks,简记为S锁),8.3.2 封锁及封锁协议,2、封锁协议在对数据对象加锁时,需要约定一些规则,如,何时申请X锁或S锁、持锁时间、何时释放等。这些规则统称为封锁协议。(1)一级封锁协议。事务T在修改数据之前必须先对其加X锁,直到事务结束才释放。(

10、2)二级封锁协议。事务T对要修改数据必须先加X锁,直到事务结束才释放X锁;对要读取的数据必须先加S锁,读完后即可释放S锁。(3)三级封锁协议。事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有锁。,使用封锁机制解决丢失修改问题,例:,事务T1在读A进行修改之前先对A加X锁当T2再请求对A加X锁时被拒绝T2只能等待T1释放A上的锁后T2获得对A的X锁;这时T2读到的A已经是T1更新过的值15避免了丢失T1的更新。,没有丢失修改,一级封锁协议。,使用封锁机制解决读“脏”数据问题,例,事务T1在对C进行修改之前,先对C加X锁,修改其值后写回磁盘T2请求在

11、C上加S锁,因T1已在C上加了X锁,T2只能等待T1因某种原因被撤销,C恢复为原值100T1释放C上的X锁后T2获得C上的S锁,读C=100。避免了T2读“脏”数据,不读“脏”数据,使用封锁机制解决不可重复读问题,事务T1在读A,B之前,先对A、B加S锁;当T2为修改B,而申请对B的X锁时,被拒绝T1为验算再读A,B,这时读出的B仍是100,求和结果仍为150,即可重复读T1结束才释放A,B上的S锁。T2才获得对B的X锁,可重复读,三级封锁协议。,8.3.2 封锁及封锁协议,三级协议的区别:什么操作需要采用何种锁,以及何时释放锁。,8.3 数据库并发控制及SQL Server并发控制,8.3.

12、1 事务及并发控制的基本概念8.3.2 封锁及封锁协议8.3.3 封锁出现的问题及解决方法,8.3.3 封锁出现的问题及解决方法,封锁技术好处:可以有效地解决并行操作的一致性问题。缺点:带来一些新的问题:1、活锁2、死锁3、并发调度的可串行性,1.活锁,T2有可能永远等待。这就是活锁的情形,解决方法?采用先来先服务的策略,2.死锁,解决方法:1.预防死锁2.死锁的诊断与解除,2.死锁,1)、预防死锁的方法 一次封锁法要求每个事务必须一次将所有要用的数据全部加锁,否则不能继续执行顺序封锁法预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。,2.死锁,2)死锁的诊断与解除DBMS在解决

13、死锁的问题上更普遍采用的是:诊断并解除死锁的方法。与操作系统类似。,3、并发调度的可串行性,DBMS对并发事务不同的调度可能会产生不同的结果什么样的调度是正确的?调度的结果与事务在没有受到其他事务干扰的情况下的执行结果是否一致。准则:多个事务并发执行的结果与按串行执行的结果相同,这种调度策略称为可串行化(Serializable)的调度(即,正确的)。反之称为不可串行化调度(即,错误的)。,3、并发调度的可串行性,例现在有两个事务,分别包含下列操作:事务T1:读B;A=B+1;写回A事务T2:读A;B=A+1;写回B现给出对这两个事务不同的调度策略,3、并发调度的可串行性,假设A、B的初值均为

14、2。按T1T2次序执行结果为A=3,B=4 串行调度策略正确的调度,3、并发调度的可串行性,假设A、B的初值均为2。T2T1次序执行结果为B=3,A=4 串行调度策略正确的调度,3、并发调度的可串行性,可串行化的调度,执行结果与串行调度(a)的执行结果相同是正确的调度,3、并发调度的可串行性,执行结果与(a)、(b)的结果都不同是错误的调度,3、并发调度的可串行性,如何保证调度的可串行化?两段锁协议:所有事物必须分两个阶段对数据进行加锁和解锁1)对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。2)释放一个封锁之后,事务不再申请并获得对该数据的封锁。例:遵循两段锁协议的事务举例SLock A,SLock B,XLock C,ULock B,ULock A,ULock C例:不遵循两段锁协议的事务举例SLock A,USLock A,SLock B,XLock C,ULock B,ULock C,3、并发调度的可串行性,注意:两段锁协议是保证可串行化的充分条件,但不是必要条件;两段锁协议,与一次封锁不同;一次封锁法遵循两段锁协议;遵循两段锁协议的事务也可能发生死锁。(死锁检测、解除),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号