数据库保护及SQLServer的数据库保护技术.ppt
《数据库保护及SQLServer的数据库保护技术.ppt》由会员分享,可在线阅读,更多相关《数据库保护及SQLServer的数据库保护技术.ppt(75页珍藏版)》请在三一办公上搜索。
1、第8章 数据库保护及SQL Server的数据库保护技术,8.3 数据库的并发控制及SQL Server的并发控制机制8.3.1 事务及并发控制的基本概念,事务是多用户系统的一个数据操作基本单元。允许多个事务并行地执行,对并发执行的事务的控制也就称为并发控制。,1.事务的概念,所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。,2.并发控制,一次材料的入库:在入库日记文件中写入材料入库记录,修改库存文件,更新当前库存量一次产品的销售:在销售文件中写入销售记录,修改成品库存文件,更新成品库存量银行的转账业务:从A账户提款,插入取款记录,修改余额 存入B
2、账户。插入存款记录,修改余额,事务反映客观世界中以完整单位提交的一项工作.是现实世界定义的一个逻辑工作单位。,事务处理是保证数据库一致性状态的重要方法。数据库的一致性状态是指所有数据必须满足数据完整性约束条件的状态。,最常见的事务处理是由二次或多次对数据库的操作完成的。,(2)事务的特性,(1)丢失修改丢失更新的实际例子:库存处理T1:(进货入库处理)进库产品400件 库存量=库存量+400T2:(销售出库处理)销售产品40件 库存量=库存量-40,2个事务顺序处理的过程,2个事务并发执行丢失修改的过程,(2)不一致性分析,事例:T1:分析数据 T2:与此同时,T2修改数据,不一致性分析(1)
3、,不一致性分析(2),事例:T1:汇总库存产品的库存量 T2:与此同时,T2更新库存中的二种产品,更新事务的结果,不一致分析(2),(3)读未提交数据(脏数据),2个事务顺序处理的过程,T2使用T1未提交数据可能产生的问题,8.3.2 封锁及封锁协议,1.锁的类型(1)排它锁(Exclusive Locks,简称X锁)排它锁也称为独占锁或写锁。一旦事务T对数据对象 A 加上排它锁(X锁),允许T读取和修改 A,其他任何事务不能再对 A 加任何类型的锁,直到 T 释放 A 上的锁为止。(2)共享锁(Share Locks,简称S锁)共享锁又称读锁。如果事务T对数据对象A加上共享锁(S 锁),允许
4、T读取A,但不能和修改 A。其他事务只能再对 A 加S锁,不能加 X 锁,直到事务 T 释放 A 上的 S 锁为止。,数据状态:无锁,共享锁 S,排它锁 X,(2)封锁类型的相容性,NO:不相容的请求YES:相容的请求如果 2 个封锁是不相容的,再提出封锁的事务要等待,(1)一级封锁协议一级封锁协议是事务T在修改数据之前必须先对其加X锁,直到事务结束才释放。,2.封锁协议,对数据加锁需要一些规则主要涉及时间(申请、持有,释放)和锁的类型(S,X),(2)二级封锁协议二级封锁协议是:事务T对要修改数据必须先加X锁,直到事务结束才释放X锁;对要读取的数据必须先加S锁,读完后即可释放S锁。,(3)三
5、级封锁协议三级封锁协议是事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有锁。,三封锁协议,一级封锁协议不能防止不一致性分析据,二级封锁协议不能防止不一致性分析据,一级封锁协议不能防止读未提交数据,8.3.3 封锁出现的问题及解决方法,1.活锁和死锁(1)活锁 在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活锁。(总是有机会获得锁的事务却永远没得到锁)解决活锁的方法是采用先来先服务的方法,即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。,(2)死锁多事务相互等待对方释放封锁,形成交错等待的僵持局面称为死锁。,预防死锁通常有
6、两种方法:一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则该事务不能继续执行。2)顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。死锁的恢复:当死锁出现时,一定要解除它。DBMS 周期地测试数据库是否处于死锁状态将其中一个处理代价小的事务撤消,ROLLBACK这个事务,释放这个事务进行的封锁,使其它事务可能进行下去。(诊断与解除),2.并发调度的可串行性多个事务并发执行的结果与按串行执行的结果相同,这种调度策略称为可串行化的调度,反之称为不可串行化调度。,T1 读 B,A=B+1 回写A,T2 读 A B=A+1 回写B,设初始值:A=B=2,3.两段
7、锁协议1)在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。2)在释放一个封锁之后,事务不再申请并获得任何其他封锁,事务分为两个阶段:获得封锁(扩展阶段),申请获得锁,不释放锁。释放封锁(收缩阶段),释放封锁,不再申请任何封锁。,并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略是可串行化的,4.封锁的粒度封锁粒度(Granularity)是指封锁对象的大小。逻辑单元:属性值、属性值的集合、元组、关系、数据库物理单元:页,块封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越小,并发度越高,系统开销也越大;封锁的粒度越大,并发度越低,系统开销也越小。,(
8、1)多粒度封锁,多粒度树,根节点,子节点,允许每个节点独立加锁后裔节点被加以同样类型锁显式封锁:直接加到数据对象上的封锁隐式封锁:上级对象加锁而使该数据对象加锁数据对象加锁,系统要进行三种检查,(2)意向锁,意向锁含义:如果对一个节点加意向锁,则说明下层节点正在被加锁;对任一节点加锁时,必须先对它的上层节点加意向锁。,IS(Intent Share Lock)意向共享锁如果对一个数据对象加 I S 锁,表示它的后裔节点意向加 S 锁,2 I X(Intent Exclusive Lock)意向排它锁如果对一个数据对象加 I X锁,表示它的后裔节点意向加 X 锁,3 S I X(Share In
9、tent Exclusive Lock)共享意向排它锁如果对一个数据对象加 S I X锁,表示对它加S 锁,再加 I X锁,1.SQL Server的事务类型SQL Server的事务分为两种类型:系统提供的事务是指在执行某些语句时,一条语句就是一个事务,它的数据对象可能是一个或多个表(视图),可能是表(视图)中的一行数据或多行数据;用户定义的事务以BEGIN TRANSACTION语句开始,以COMMIT(事务提交)或ROLLBAK(回滚)结束。,8.3.4 SQL Server的并发控制机制,2 锁的级别3 锁的类型,完整性约束条件针对的对象有:关系、元组、列。根据约束对象可分为:表级约束
10、:若干元组间、关系中以及关系之间联系的约束某门课的成绩优秀比例不能超过20%先修课必须是有效值外码必须是有效值,8.2 数据库完整性及SQL Server的完整性控制,数据完整性是指数据的正确性和相容性,为保证数据库的完整性,DBMS必须提供定义检查和控制数据完整性的机制,并把用户定义的数据库完整性约束条件作为模式的一部分存入数据库中。,8.2.1 完整性约束条件及完整性控制,元组级约束:元组中的字段组和字段间联系的约束对于学生表中的学号前4位与入学年份中的年份一致列级约束:取值范围、精度、排序等而制定的约束条件。对于成绩表中的成绩应大于等于0,小于等于100,以上三类对象可以是静态的,也可以
11、是动态的。静态约束:每一确定状态时数据库对象影满足的约束确定,数据库状态稳定时的约束,是重要的一类完整性约束。动态约束:数据处理上的改变以及数据库从一种状态转变成另一种状态时,新旧值之间所应满足的约束条件。,1.静态级约束(1)静态列级约束1)对数据类型的约束。2)对数据格式的约束。3)对取值范围的约束。4)对空值的约束。5)其他约束(默认,唯一,检查),(2)静态元组级约束静态元组级约束是对元组的属性组值的限定,及规定了属性之间的值或结构的相互制约关联。(3)静态表级约束1)实体完整性约束。2)参照完整性约束。3)函数依赖约束。满足3NF但不满足BCNF的关系,例如:学生教师课程(学生,课程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 保护 SQLServer 技术
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6050175.html