数据库保护及SQLServer的数据库保护技术.ppt
《数据库保护及SQLServer的数据库保护技术.ppt》由会员分享,可在线阅读,更多相关《数据库保护及SQLServer的数据库保护技术.ppt(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第8 8章章 数据库保护及数据库保护及SQL ServerSQL Server的数据库保护技术的数据库保护技术8.3 8.3 数据库的并发控制及数据库的并发控制及SQL ServerSQL Server的并发控制机制的并发控制机制8.3.1 8.3.1 事务及并发控制的基本概念事务及并发控制的基本概念事务是多用户系统的一个数据操作基本单元。允许事务是多用户系统的一个数据操作基本单元。允许多个事务并行地执行多个事务并行地执行,对并发执行的事务的控制也就对并发执行的事务的控制也就称为并发控制。称为并发控制。1.1.事务的概念事务的概念所谓事务是用户定义的一个数据库操作序列,这些操作所谓事务是用户
2、定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。要么全做要么全不做,是一个不可分割的工作单位。2.2.并发控制并发控制一次材料的入库:一次材料的入库:在入库日记文件中写入材料入库记录在入库日记文件中写入材料入库记录,修改库存文件,更新当前库存量修改库存文件,更新当前库存量一次产品的销售一次产品的销售:在销售文件中写入销售记录,在销售文件中写入销售记录,修改成品库存文件,更新成品库存量修改成品库存文件,更新成品库存量银行的转账业务:银行的转账业务:从从A账户提款,插入取款记录,修改余额账户提款,插入取款记录,修改余额 存入存入B账户。插入存款记录,修改余额账户。插
3、入存款记录,修改余额事务反映客观世界中以完整单位提交的一项工作事务反映客观世界中以完整单位提交的一项工作.是现实是现实世界定义的一个逻辑工作单位。世界定义的一个逻辑工作单位。事务处理是保证数据库事务处理是保证数据库一致性状态一致性状态的重的重要方法。数据库的一致性状态是指所有数据要方法。数据库的一致性状态是指所有数据必须满足数据完整性约束条件的状态。必须满足数据完整性约束条件的状态。最常见的事务处理是由二次或多次对最常见的事务处理是由二次或多次对数据库的操作完成的。数据库的操作完成的。(2 2)事务的特性事务的特性原子性原子性事务所有操作必须完成,否则事务将被撤消事务所有操作必须完成,否则事务
4、将被撤消一致性一致性数据库必须保持一致性状态,当一个事务完成之后,数据库必须保持一致性状态,当一个事务完成之后,数据库必须达到一个新的一致性状态。数据库必须达到一个新的一致性状态。隔离性隔离性当一个事务执行期间,所使用的数据,不能被第二个当一个事务执行期间,所使用的数据,不能被第二个事务再使用,直到第一个事务结束为止。事务再使用,直到第一个事务结束为止。持续性持续性事务被提交后,不管系统发生什么故障,该事务对数事务被提交后,不管系统发生什么故障,该事务对数据库的所有更新操作都永久保留在数据库中,不会丢据库的所有更新操作都永久保留在数据库中,不会丢失。失。(1)丢失修改丢失修改丢失更新的实际例子
5、丢失更新的实际例子:库存处理库存处理T1:(进货入库处理进货入库处理)进库产品进库产品400件件库存量库存量=库存量库存量+400T2:(销售出库处理销售出库处理)销售产品销售产品40件件库存量库存量=库存量库存量-402个事务顺序处理的过程个事务顺序处理的过程顺序顺序事务事务步骤步骤存储值存储值1T1读出在库数量读出在库数量602T1计算计算:在库数量在库数量=在库数量在库数量+4003T1写在库数量写在库数量4604T2读在库数量读在库数量4605T2计算计算:在库数量在库数量=在库数量在库数量-406T2写在库数量写在库数量4202个事务并发执行丢失修改的过程个事务并发执行丢失修改的过程
6、顺序顺序事务事务步骤步骤存储值存储值1T1读出在库数量读出在库数量602T2读出在库数量读出在库数量603T1计算计算:在库数量在库数量=在库数量在库数量+4004T2计算计算:在库数量在库数量=在库数量在库数量-405T1写在库数量写在库数量460(丢失丢失)6T2写在库数量写在库数量20(2)不一致性分析不一致性分析事例:事例:T1:分析数据:分析数据T2:与此同时,:与此同时,T2修改数据修改数据T1:SELECTSUM(在库数量在库数量)FROM库存库存T2:UPDATE库存库存SET在库数量在库数量=在库数量在库数量+50WHERE产品名称产品名称=B不一致性分析不一致性分析(1)顺
7、序顺序事务事务操作操作值值累加累加1T1读产品读产品A的在库数量的在库数量50502T1读产品读产品B的在库数量的在库数量1001503T2读产品读产品B的在库数量的在库数量1004T2在库数量在库数量=在库数量在库数量*25T2写产品写产品B的在库数量的在库数量2006T1读产品读产品A的在库数量的在库数量50507T1读产品读产品B的在库数量的在库数量200250不一致性分析(不一致性分析(2 2)事例:事例:T1:汇总库存产品的库存量:汇总库存产品的库存量T2:与此同时,:与此同时,T2更新库存中的二种产品更新库存中的二种产品T1:SELECTSUM(在库数量在库数量)FROM库存库存T
8、2:UPDATE库存库存SET在库数量在库数量=在库数量在库数量+50WHERE产品名称产品名称=CUPDATE库存库存SET在库数量在库数量=在库数量在库数量-50WHERE产品名称产品名称=D更新事务的结果更新事务的结果前前后后产品产品在库数量在库数量在库数量在库数量A6060B120120C7012070+50D180130180-50E120120合计合计550550不一致分析(不一致分析(2 2)顺序顺序事务事务操作操作值值累加累加1T1读产品读产品A的在库数量的在库数量60602T1读产品读产品B的在库数量的在库数量1201803T2读产品读产品C的在库数量的在库数量704T2在库
9、数量在库数量=在库数量在库数量+505T2写产品写产品C的在库数量的在库数量1206T1读产品读产品C的在库数量的在库数量120(修改后)(修改后)3007T1读产品读产品D的在库数量的在库数量180(修改前)(修改前)4808T2读产品读产品D的在库数量的在库数量1809T2在库数量在库数量=在库数量在库数量-5010T2写产品写产品D的在库数量的在库数量13011T2COMMIT12T1读产品读产品E的在库数量的在库数量120600(3)读未提交数据(读未提交数据(脏脏数据)数据)2个事务顺序处理的过程个事务顺序处理的过程顺序顺序事务事务步骤步骤存储值存储值1T1读出在库数量读出在库数量6
10、02T1计算计算:在库数量在库数量=在库数量在库数量+4003T1写在库数量写在库数量4604T1ROLLBACK605T2读在库数量读在库数量606T2计算计算:在库数量在库数量=在库数量在库数量-407T2写在库数量写在库数量20T2使用使用T1未提交数据可能产生的问题未提交数据可能产生的问题顺序顺序事务事务步骤步骤存储值存储值1T1读出在库数量读出在库数量602T1计算计算:在库数量在库数量=在库数量在库数量+4003T1写在库数量写在库数量4604T2读在库数量读在库数量4605T2计算计算:在库数量在库数量=在库数量在库数量-406T1ROLLBACK607T2写在库数量写在库数量4
11、208.3.28.3.2封锁及封锁协议封锁及封锁协议封锁及封锁协议封锁及封锁协议1.1.锁的类型锁的类型 (1)(1)排它锁(排它锁(Exclusive LocksExclusive Locks,简称,简称X X锁)锁)排排它它锁锁也也称称为为独独占占锁锁或或写写锁锁。一一旦旦事事务务T T对对数数据据对对象象 A A 加加上上排排它它锁锁(X X锁锁),允允许许T T读读取取和和修修改改 A A,其其他他任任何何事事务务不不能能再再对对 A A 加任何类型的锁,直到加任何类型的锁,直到 T T 释放释放 A A 上的锁为止。上的锁为止。(2)(2)共享锁(共享锁(Share LocksSha
12、re Locks,简称,简称S S锁)锁)共共享享锁锁又又称称读读锁锁。如如果果事事务务T T对对数数据据对对象象A A加加上上共共享享锁锁(S S 锁锁),允允许许T T读读取取A A,但但不不能能和和修修改改 A A。其其他他事事务务只只能能再再对对 A A 加加S S锁,不能加锁,不能加 X X 锁,直到事务锁,直到事务 T T 释放释放 A A 上的上的 S S 锁为止。锁为止。数据状态:无锁,共享锁数据状态:无锁,共享锁S,排它锁,排它锁X(2)封锁类型的相容性封锁类型的相容性T1T2SXSYESNOXNONONO:不相容的请求:不相容的请求YES:相容的请求:相容的请求如果如果 2
13、个封锁是不相容的,再提出封锁的事务要等待个封锁是不相容的,再提出封锁的事务要等待(1)一级封锁协议一级封锁协议一一级级封封锁锁协协议议是是事事务务T在在修修改改数数据据之之前前必必须须先先对对其其加加X锁锁,直直到事务结束才释放。到事务结束才释放。2.2.封锁协议封锁协议对数据加锁需要一些规则主要涉及时间(申请、持有,释放)对数据加锁需要一些规则主要涉及时间(申请、持有,释放)和锁的类型(和锁的类型(S,X)T1T2X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60X锁锁在库数量(失败)在库数量(失败)等待等待在库数量在库数量=在库数量在库数量+400等待等待写写在库数量在库数量
14、=460等待等待COMMIT等待等待释放释放X锁锁在库数量在库数量X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=460在库数量在库数量=在库数量在库数量-40写写在库数量在库数量=420COMMIT释放释放X锁锁在库数量在库数量(2)二级封锁协议二级封锁协议二二级级封封锁锁协协议议是是:事事务务T对对要要修修改改数数据据必必须须先先加加X锁锁,直直到到事事务务结结束束才才释释放放X锁锁;对对要要读读取取的的数数据据必必须须先先加加S锁锁,读读完完后后即即可可释释放放S锁。锁。T1T2X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60S锁锁在库数量(失败)在库数量(失
15、败)等待等待在库数量在库数量=在库数量在库数量+400等待等待写写在库数量在库数量=460等待等待COMMIT等待等待释放释放X锁锁在库数量在库数量S锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=460释放释放S锁锁在库数量在库数量COMMIT.(3)三级封锁协议三级封锁协议三三级级封封锁锁协协议议是是事事务务T在在读读取取数数据据之之前前必必须须先先对对其其加加S锁锁,在在要要修修改改数数据据之之前前必必须须先先对对其其加加X锁锁,直直到到事事务务结结束束后后才才释释放所有锁。放所有锁。T1T2S锁锁产品产品AS锁锁产品产品B读读A=50读读B=100A+B=150X锁产品锁产品
16、B(失败)(失败)读读A=50等待等待读读B=100等待等待A+B=150等待等待COMMIT等待等待S锁释放锁释放BS锁释放锁释放A等待等待X锁产品锁产品B(成功)(成功)操作操作协议协议修改数据修改数据X锁锁读取数据读取数据S锁锁一致性保证一致性保证一级一级事务结束事务结束不丢失修改不丢失修改二级二级事务结束事务结束读完后读完后不丢失修改不丢失修改不读未提交数据不读未提交数据三级三级事务结束事务结束事务结束事务结束不丢失修改不丢失修改不读未提交数据不读未提交数据一致性分析一致性分析三封锁协议三封锁协议一级封锁协议不能防止不一致性分析据一级封锁协议不能防止不一致性分析据T1T2读读在库数量在
17、库数量=60X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60在库数量在库数量=在库数量在库数量+400写写在库数量在库数量=460读读在库数量在库数量=460二级封锁协议不能防止不一致性分析据二级封锁协议不能防止不一致性分析据T1T2S锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60 释放释放S锁锁在库数量在库数量X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60在库数量在库数量=在库数量在库数量+400写写在库数量在库数量=460COMMIT释放释放X锁锁在库数量在库数量S锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=460释放释放S锁
18、锁在库数量在库数量一级封锁协议不能防止读未提交数据一级封锁协议不能防止读未提交数据T1T2X锁锁在库数量(成功)在库数量(成功)读读在库数量在库数量=60在库数量在库数量=在库数量在库数量+400写写在库数量在库数量=460读读在库数量在库数量=460ROLLBACKCOMMIT释放释放X锁锁在库数量在库数量 8.3.38.3.3封锁出现的问题及解决方法封锁出现的问题及解决方法封锁出现的问题及解决方法封锁出现的问题及解决方法1.1.活锁和死锁活锁和死锁(1)活锁活锁在在多多个个事事务务请请求求对对同同一一数数据据封封锁锁时时,总总是是使使某某一一用用户户等等待待的的情情况况称称为为活活锁锁。(
19、总总是是有有机机会会获获得得锁锁的的事事务务却却永永远远没没得得到锁)到锁)解解决决活活锁锁的的方方法法是是采采用用先先来来先先服服务务的的方方法法,即即对对要要求求封封锁数据的事务排队,使前面的事务先获得数据的封锁权。锁数据的事务排队,使前面的事务先获得数据的封锁权。(2)死锁死锁多多事事务务相相互互等等待待对对方方释释放放封封锁锁,形形成成交交错错等等待待的的僵僵持持局局面面称称为死锁。为死锁。T1T2X锁锁数据数据A(成功成功)X锁锁数据数据B(成功成功)X锁锁数据数据B(失败失败)X锁锁数据数据A(失败失败)等待等待等待等待等待等待等待等待等待等待等待等待.预防死锁通常有两种方法:预防
20、死锁通常有两种方法:1)一一次次封封锁锁法法:要要求求每每个个事事务务必必须须一一次次将将所所有有要要使使用用的的数数据全部加锁,否则该事务不能继续执行。据全部加锁,否则该事务不能继续执行。2)顺顺序序封封锁锁法法:预预先先对对数数据据对对象象规规定定一一个个封封锁锁顺顺序序,所所有有事务都按这个顺序实行封锁。事务都按这个顺序实行封锁。死锁的恢复:死锁的恢复:当死锁出现时,一定要解除它。当死锁出现时,一定要解除它。DBMS周期地测试数据周期地测试数据库是否处于死锁状态库是否处于死锁状态将其中一个处理代价小的事务撤消将其中一个处理代价小的事务撤消,ROLLBACK这个事务这个事务,释放这个事务进
21、行的封锁释放这个事务进行的封锁,使其它使其它事务可能进行下去。(诊断与解除)事务可能进行下去。(诊断与解除)2.2.并发调度的可串行性并发调度的可串行性多多个个事事务务并并发发执执行行的的结结果果与与按按串串行行执执行行的的结结果果相相同同,这这种种调调度度策策略略称称为为可可串串行行化化的的调调度,反之称为不可串行化调度。度,反之称为不可串行化调度。T1T2S锁锁BY=B=2锁释放锁释放BX锁锁AA=Y+1写写A=3锁释放锁释放AS锁锁AX=A=3锁释放锁释放AX锁锁BB=X+1写写B=4锁释放锁释放B串行调度串行调度T1T2T1T2S锁锁AX=A=2锁释放锁释放AX锁锁BB=X+1写写B=
22、3锁释放锁释放BS锁锁BY=B=3锁释放锁释放BX锁锁AA=Y+1写写A=4锁释放锁释放A串行调度串行调度T2T1T1T2S锁锁BY=B=2S锁锁AX=A=2锁释放锁释放B锁释放锁释放AX锁锁AA=Y+1写写A=3X锁锁BB=X+1写写B=3锁释放锁释放A锁释放锁释放B不可串行化的调度不可串行化的调度T1T2S锁锁BY=B=2锁释放锁释放BX锁锁AS锁锁AA=Y+1wait写写A=3wait锁释放锁释放AwaitS锁锁AX=A=3锁释放锁释放AX锁锁BB=X+1写写B=4可串行化的调度可串行化的调度T1读读B,A=B+1回写回写A,T2读读AB=A+1回写回写B,设初始值:设初始值:A=B=2
23、3.3.两段锁协议两段锁协议1)1)在在对对任任何何数数据据进进行行读读、写写操操作作之之前前,首首先先要要申申请请并并获获得得对对该数据的封锁。该数据的封锁。2)2)在在释放释放一个封锁之后,事务不再申请并获得任何其他封锁一个封锁之后,事务不再申请并获得任何其他封锁事务分为两个阶段:事务分为两个阶段:获得封锁(扩展阶段),申请获得锁,不释放锁。获得封锁(扩展阶段),申请获得锁,不释放锁。释放封锁(收缩阶段),释放封锁,不再申请任何封锁。释放封锁(收缩阶段),释放封锁,不再申请任何封锁。SlockAXlockBUnlockAUnlockB扩展阶段扩展阶段收缩阶段收缩阶段并发执行的所有事务均遵守
24、两段封锁协议,则对并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略是可串行化的这些事务的任何并发调度策略是可串行化的4.4.封锁的粒度封锁的粒度封锁粒度(封锁粒度(Granularity)是指封锁对象的大小。)是指封锁对象的大小。逻辑单元:属性值、属性值的集合、元组、关系、数据库逻辑单元:属性值、属性值的集合、元组、关系、数据库物理单元:页,块物理单元:页,块封锁粒度与系统的并发度和并发控制的开销密切相关。封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越小,并发度越高,系统开销也越大;封锁的粒度越小,并发度越高,系统开销也越大;封锁的粒度越大,并发度越低,系统开
25、销也越小。封锁的粒度越大,并发度越低,系统开销也越小。(1)多粒度封锁)多粒度封锁多粒度树多粒度树数据库数据库关系关系R1关系关系Rn元组元组元组元组元组元组元组元组根节点根节点子节点子节点允许每个节点独立加锁允许每个节点独立加锁后裔节点被加以同样类后裔节点被加以同样类型锁型锁显式封锁:直接加到数显式封锁:直接加到数据对象上的封锁据对象上的封锁隐式封锁:上级对象加隐式封锁:上级对象加锁而使该数据对象加锁锁而使该数据对象加锁数据对象加锁,系统要数据对象加锁,系统要进行三种检查进行三种检查(2)意向锁)意向锁意向锁含义:如果对一个节点加意向锁,则说明下层节意向锁含义:如果对一个节点加意向锁,则说明
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 保护 SQLServer 技术
限制150内