版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章数据库安全与保护数据库的安全与保护第1页数据库安全与保护5.1安全与保护概述5.2数据库安全性保护5.3数据库完整性保护5.4数据库并发控制技术
5.5数据库恢复技术
5.6数据库复制与相关技术数据库的安全与保护第2页数据库安全与保护数据库中数据主要性:当代企业最宝贵共享信息和财富。安全与保护:确保数据在使用过程中安全可靠、正确可用,且当数据库遭到破坏后能够快速地得到恢复。数据库的安全与保护第3页5.1安全与保护概述造成数据库中数据不正确,或被破坏原因:⑴自然或人为破坏:火灾、计算机病毒或未被授权人有意篡改数据等。⑵对数据库数据更新操作有误:操作时输入数据有误或存取数据库应用程序有错等。⑶数据库并发操作引发数据不一致。⑷数据库系统软/硬件故障造成数据被破坏。数据库的安全与保护第4页数据库应用系统能够从硬件层网络层操作系统层DBMS层应用系统等多个层面上设置安全和保护办法来处理以上四类原因引发数据库安全与保护问题。5.1安全与保护概述数据库的安全与保护第5页5.1安全与保护概述安全性级别环境级:对机房和设备保护(含硬件)职员级:职员道德教育,正确授权OS级:预防非法用户从OS处进入DBS网络级:预防非法用户从OS处进入DBS数据库系统:检验正当用户及其权限(含DBMS)数据库的安全与保护第6页5.1安全与保护概述仅关心DBMS提供数据库安全和保护功效:⑴安全性(security)保护:预防非法用户对数据库非法使用,以防止数据泄露、篡改或破坏。⑵完整性(integrity)保护:确保数据正确性和一致性。⑶并发控制(concurrentcontrol):确保多用户能共享数据库,并维护数据一致性。⑷数据库恢复(databaserecovery):在系统失效后数据库恢复,配合定时备份数据库,使数据库不丢失数据。数据库的安全与保护第7页5.2数据库安全性保护DBMS提供数据库安全性保护:只允许有正当使用权限用户访问他有权访问数据.通常包含以下几个层次:
用户判别
存取权限控制
视图机制
跟踪审查
数据加密存放
返回数据库的安全与保护第8页5.2.1用户判别用户若要访问某个数据库,必须首先登录到DBMS。
DBMS提供最外层安全性保护办法:对于每个要求访问数据库用户,判别其是否为正当用户。
判别方法:DBMS系统内部统计着全部正当用户用户名和口令。每次用户要求进入系统时,DBMS要求用户输入用户名和口令,并将其与系统内部统计正当用户名和口令进行查对,经过判定正当用户才能登录到DBMS。
数据库的安全与保护第9页5.2.1用户判别
DBMS提供了一定工具和命令,让DBA创建和定义正当用户。并对每个正当用户赋予一定角色和权限.比如:
DatabaseCreators:可创建数据库角色;DiskAdministrators:可管理磁盘文件角色;
SecurityAdministrators:可管理注册安全角色。
返回数据库的安全与保护第10页5.2.2存取权限控制数据库是一个共享数据集合,不一样用户对数据库数据操作范围普通是不一样,其操作权限也是不一样。存取权限控制:当一个用户登录到DBMS后,找出他在数据库中能够使用数据对象,对能够使用对象限定他能够执行操作。数据库的安全与保护第11页5.2.2存取权限控制比如,在高校信息管理系统中,财务部人员无权操作教务部门相关数据;教务人员也无权操作财务部门数据;另外,财务处数据只有财务部门人能够修改,而其它相关部门只能查询其相关数据,而无权修改这些数据。商品化DBMS都提供了一定工具和命令来定义每个用户存取权限(SQLServer企业管理器和GRANT命令等),以预防各种非法修改和使用,确保数据安全性。数据库的安全与保护第12页5.2.2存取权限控制DBMS对每个用户,能够定义以下两种存取控制权限:数据对象权限:要求用户使用数据库中数据对象范围—数据库、表、列;操作类型权限:要求用户在可使用数据对象上能执行操作—增、删、改、看数据库的安全与保护第13页5.2.2存取权限控制
DBMS中有两种存取控制权管理方式:1、集中管理方式:由DBA定义每个用户权限。2、分散管理方式:由用户将自己拥有全部或部分权限授予其它用户。DBMS也为DBA或授权者提供了对应工具或命令,如Revoke用于撤消授予某个用户任何操作权限。数据库的安全与保护第14页5.2.2存取权限控制表5.1关系DBMS中存取权限
数据对象操作类型模
式模式外模式内模式建立、修改、检索建立、修改、检索建立、修改、检索数据表元组属性列查找、插入、修改、删除查找、插入、修改、删除数据库的安全与保护第15页5.2.2存取权限控制
授权粒度:存取权限控制数据对象范围,是衡量授权机制是否灵活一个主要指标。
粒度与系统效率:授权定义中数据粒度越细,即可定义数据对象范围越小,授权子系统就越灵活,能够提供安全性就越完善。但数据字典可能变得大而复杂,系统定义与检验权限开销也会随之而增大。
返回数据库的安全与保护第16页5.2.3视图机制
视图机制:为不一样用户定义不一样视图,把用户无权存取数据用户隐藏起来,从而自动地对数据提供一定程度安全保护。视图机制主要功效是确保应用程序数据独立性,其安全保护功效太不精细。实际数据库应用系统通常是视图机制与授权机制配合使用:首先用视图机制屏蔽掉一些保密数据,然后在视图上面再深入定义其存取权限。返回数据库的安全与保护第17页5.2.4跟踪审查跟踪审查:一个事后监视安全性保护办法,它跟踪数据库访问活动,以发觉数据库非法访问,到达安全防范目标。DBMS跟踪程序可对一些保密数据进行跟踪监测,统计相关这些数据访问活动。当发觉潜在窃密活动(如重复、相同查询等)时,一些有自动警报功效DBMS就会发出警报信息;对于没有自动报警功效DBMS,可依据这些跟踪统计信息进行事后分析和调查。数据库的安全与保护第18页5.2.4跟踪审查跟踪审查结果统计在一个特殊文件上,这个文件叫跟踪审查统计。跟踪审查统计普通包含以下内容:·操作类型(比如修改、查询等)·操作终端标识与操作者标识·操作日期和时间·所包括数据·数据前像和后像数据库的安全与保护第19页5.2.4跟踪审查跟踪审查普通由DBA控制,DBMS提供对应语句供施加和撤消跟踪审查之用。对表Reports施加跟踪和撤消跟踪审查:AUDITSELECT,INSERT,DELETE,UPDATEONReportsWHENEVERSUCCESSUL;(即对Reports表每次成功选择、增加、插入、删除、修改作跟踪审查统计。)NOAUDITALLONReports(即撤消对Reports全部跟踪审查。)数据库的安全与保护第20页5.2.5数据加密存放对于高度敏感性数据,比如财务数据、军事数据、国家安全数据,能够采取数据加密技术,以密码形式传输和存放数据。即使非法用户经过不正当路径取得加密数据,因为不知道解密算法,通常只能看到一些无法识别二进制代码而不知道数据真实内容,从而到达保护数据目标。当正当用户使用数据时,他看到是由系统提供解密算法还原后可识别正常数据,即原文。数据库的安全与保护第21页5.2.5数据加密存放商品化DBMS通常提供了数据加密例行程序,可依据用户要求自动对存放和传输数据进行加密处理。有些DBMS本身未提供这种加密程序,但它们普通都提供了接口,允许用户使用其它厂商推出加密程序对数据加密。数据加密与解密比较费时,且数据加密与解密程序会占用大量系统资源,所以数据加密功效通常只作为可选特征,允许用户自由选择使用,普通只对高度机密数据加密。返回数据库的安全与保护第22页5.3数据库完整性保护数据库完整性:数据库中数据正确性、一致性和相容性。完整性保护:采取办法及时发觉数据不正确、不一致或不相容性,预防错误深入扩大并能及时恢复数据库,确保数据库完整性。完整性约束分类完整性控制触发器
返回数据库的安全与保护第23页5.3.1完整性约束分类完整性约束:数据库中数据本身一些语义限制、数据之间逻辑约束以及数据改变时所应遵照规则等。约束条件普通在数据模式中给出,作为模式一部分存入数据字典中。运行时由DBMS自动检验,当不满足条件时马上向用户通报方便采取办法。数据库的安全与保护第24页5.3.1完整性约束分类完整性约束条件作用对象分为列、元组和关系三种级别。
列约束:指对其取值类型、范围、精度、排序等约束条件。
元组束:指对统计中各个属性之间联络约束条件。
关系束:对关系以及关系之间联络约束条件。在DBMS中,完整性约束功效包含完整性约束条件设置和它检验两部分,普通经过完整性约束语句给出。数据库的安全与保护第25页5.3.1完整性约束分类完整性约束条件作用状态:静态约束条件和动态约束条件。静态约束:数据库中数据语法、语义限制与数据间逻辑约束.它反应数据及数据间固有逻辑特征。比如:国家公务员年纪约束为18~60岁,工资约束为300~5000元等,可分别用逻辑公式表示为:Age≤60ANDAge≥18Salary≤5000ANDSalary≥300
动态约束:数据库中数据改变时应遵照规则。它反应数据改变规则。比如,学生选修数据库课程考试合格后,在其总学分中就要自动增加该课程学分。数据库的安全与保护第26页5.3.1完整性约束分类依据完整性约束条件作用对象和状态,能够将完整性约束条件分为以下六种类型:(1)静态列级约束;(2)静态元组约束(3)静态关系约束;(4)动态列级约束(5)动态元组约束;(6)动态关系约束
返回数据库的安全与保护第27页(1)静态列级约束静态列级约束:对一个列取值域说明,主要有:对数据类型约束。对数据格式约束。对取值范围或取值集合约束。对空值约束。比如,规定成绩可认为空值,姓名不能为空值。
返回数据库的安全与保护第28页(2)静态元组约束静态元组约束:要求组成一个元组各列值之间约束关系。比如,教师表中包含职称、职称津贴等,并要求教授津贴不低于950元就是静态元组约束。
返回数据库的安全与保护第29页(3)静态关系约束一个关系各个元组之间或者若干关系之间存在联络或约束。常见静态关系约束有四种:(1)实体完整性约束;(2)参考完整性约束;(3)函数依赖约束;(4)统计约束;其中函数依赖约束普通在关系模式中定义。返回数据库的安全与保护第30页(4)动态列级约束动态列级约束:修改列定义或列值时应满足约束条件。比如,假如要求将原来允许为空值列改为不允许为空值时,该列当前已存在空值,则拒绝这种修改,此为修改列级时约束。又如,我们要将职员工资调整不得低于其原来工资,这是修改列值需要参考其旧值,而且新旧值之间需要满足一定约束条件。返回数据库的安全与保护第31页(5)动态元组约束动态元组约束:指修改元组时元组各个列之间需要满足某种约束条件。比如,职员工资调整不低于其原来工资+工龄*1.5等。返回
数据库的安全与保护第32页(6)动态关系约束动态关系约束:关系改变前后状态上限制条件,比如事务一致性、原子性等约束条件。返回数据库的安全与保护第33页5.3.2完整性控制
完整性控制:DBMS定义、检验并确保六大类完整性约束条件得到满足。完善DBMS完整性控制机制应该允许用户定义上述全部完整性约束条件,且应提供以下三个方面功效:
定义功效:为用户提供定义完整性约束条件命令或工具。
检验功效:能够自动检验用户发出操作请求是否违反了完整性约束条件。
保护功效:当发觉用户操作请求使数据违反了完整性约束条件时,能够自动采取一定办法确保数据完整性不遭破坏。数据库的安全与保护第34页5.3.2完整性控制依据DBMS检验用户操作请求是否违反完整性约束条件时机,完整性约束又可分为马上执行和延迟执行两种。马上执行约束:当一条语句执行完后马上检验完整性约束条件。延迟执行约束:完整性约束条件延迟到整个事务执行结束后,正式提交前进行检验。数据库的安全与保护第35页5.3.2完整性控制比如,在银行数据库中“借贷总金额平衡”约束就是延迟执行约束:从账号A转一笔钱到账号B为一个事务,刚从账号A转出一笔款项后账目就不平衡了,必须等到这笔款项转入账号B后,账目才重新得到平衡。所以,这个约束就必须等到事务执行完成后才进行完整性检验。数据库的安全与保护第36页5.3.2完整性控制在6种完整性约束条件中,RDBMS自动支持并控制管理实体完整性和参考完整性约束(静态关系约束一部分),而把其它完整性约束条件标准上都归入用户定义完整性之中。商品化RDBMS都提供了定义和检验实体完整性、参考完整性和用户定义完整性功效。对于违反实体完整性和用户定义完整性操作普通都采取拒绝执行方式进行处理。对于违反参考完整性操作,并不都是简单地拒绝执行,有时要依据应用语义执行一些附加操作,以确保数据库正确性。数据库的安全与保护第37页5.3.2完整性控制实现参考完整性要考虑问题:(1)外键空值问题(2)被参考关系中删除元组问题(3)在参考关系中插入元组问题(4)元组中主键值修改问题导向数据库的安全与保护第38页(1)外键空值问题依据实际情况不一样,一个关系外键有时能够取空值,有时又不能取空值,是数据库设计人员必须考虑外码空值问题。
例5.1
设一个企业数据库中有职员关系Empl和部门关系Dept,其中,Dept主键为部门号Dno,关系Empl主键为职员号Eno,外键为部门号Dno,所以,关系Dept为被参考关系或目标关系,Empl是参考关系。在关系Empl中,当某一元组Dno列值若为空值,表示该职员还未分配到任何详细部门工作。这和实际应用语义是相符,所以,关系Empl外键Dno列能够取空值。数据库的安全与保护第39页(1)外键空值问题例5.2在学生-选课数据库中,关系Students为被参考关系,其主键为Sno。关系Reports为参考关系,外键为Sno。若关系Reports外键Sno为空值,则表明尚不存在某个学生,或者某个不知学号学生,选修了某门课程,其成绩统计在Grade列中,显然与学校实际管理是不相符,所以,关系Reports外键Sno列值不能取空值。由此可知,在实现参考完整性时,DBMS除了应该提供定义外键机制以外,还应提供定义外键列值是否允许为空值机制。返回数据库的安全与保护第40页(2)被参考关系中删除元组问题
当用户将被参考关系Students中一个元组删除,怎样处理参考关系Reports中对应元组,即是否将参考关系中对应元组也一起删除,简称为被参考关系中元组删除问题。下面,我们还是经过例子来说明。
例5.3如要删除关系Students中Sno=’S01’元组,对于关系Reports中存在3个Sno都等于’S01’元组怎样处理?。数据库的安全与保护第41页(2)被参考关系中删除元组问题当删除被参考关系Students中某个元组,而参考关系Reports存在若干元组,其外键值与被参考关系删除元组主键值相同时,这时可有3种不一样处理策略:1)级联删除;2)受限删除;3)置空值删除;
返回数据库的安全与保护第42页1)级联删除级联删除(Cascades):将参考关系中外键值与被参考关系中将要删除元组主键值相同全部元组一起删除。比如,在删除关系Students中Sno=’S01’元组同时,也将关系Reports中3个Sno=’S01’元组一起删除。假如参考关系同时又是另一个关系被参考关系,则这种删除操作会继续级联下去。返回数据库的安全与保护第43页2)受限删除受限删除(Restricted):仅当参考关系中没有任何元组外键值与被参考关系中要删除元组主键值相同时,系统才执行删除操作,不然拒绝此删除操作。对于前例情况,因为参考关系Reports中又有3个元组Sno都等于’S01’,所以系统将拒绝删除被参考关系Students中Sno=’S01’元组。返回数据库的安全与保护第44页3)置空值删除
置空值删除(Nullifies):这在删除被参考关系中元组时,将参考关系中对应元组外键值置空值。比如,在删除关系Dept中Dno=’D02’元组同时,将参考关系Empl中全部Dno=’D02’元组Dno值置为空值。返回数据库的安全与保护第45页(2)被参考关系中删除元组问题这三种处理策略中,哪一个策略是最正确呢?普通要依据应用环境语义来确定,不能一概而论。在学生-选课数据库中,显然第1种策略是最正确。因为当一个学生毕业或退学后,他个人统计从Students表中删除了,他选课统计也应随之从参考关系Reports中删除。在Dept-Empl中第3种策略为佳。返回数据库的安全与保护第46页(3)在参考关系中插入元组问题当用户向参考关系Reports中插入一个元组时,而被参考关系Students中并没有对应元组,是拒绝插入操作还是进行其它处理问题,就是在参考关系中插入元组时产生问题。例5.4
假如我们向参考关系Reports中插入元组(‘S09’,’C03’,90),而被参考关系Students关系中尚没有Sno=’S09’学生,系统该怎样处理这么插入操作呢?普通地有以下2种策略:1)受限插入2)递归插入返回数据库的安全与保护第47页1)受限插入
受限插入:仅当被参考关系中存在对应元组,其主键值与参考关系刚插入元组外键值相同时,系统才执行插入操作,不然拒绝此操作。比如,对于上面情况,因为被参考关系Students关系中尚没有Sno=’S09’学生,系统将拒绝向参考关系Reports中插入元组(‘S09’,’C03’,90)。返回数据库的安全与保护第48页2)递归插入
递归插入:首先向被参考关系中插入一个对应元组,其主键值等于参考关系中将要插入元组外键值,然后再向参考关系插入元组。比如,对于上面情况,系统将首先向被参考关系Students中插入一个Sno=’S09’元组,然后再向参考关系Reports中插入元组(‘S09’,’C03’,90)。返回数据库的安全与保护第49页(4)元组中主键值修改问题当用户欲修改关系中某个元组主键值时,因为可能存在参考与被参考问题,系统怎样处理就是因主键修改而产生问题。普通有以下两种处理策略:1)不允许修改主键值2)允许修改主码
返回数据库的安全与保护第50页(1)不允许修改主键值不允许修改主键值:即不允许用户修改关系中任何元组主键值。比如,不能用UPDATE语句将学号’S02’改为’S09’。假如需要修改某个元组主键值,必须先删除该元组,然后再把含有新主键值元组插入到关系中。返回数据库的安全与保护第51页(2)允许修改主码允许修改主码:即允许用户修改关系中元组主键值,但必须确保主键值唯一性和非空,不然拒绝修改。(1)当修改关系是被参考关系时,还必须检验参考关系是否存在这么元组,其外键值等于被参考关系要修改主键值。比如,要将Students关系中Sno=’S01’Sno值改为’S09’,而参考关系Reports中有3个元组Sno=’S01’,这时与在被参考关系中删除元组情况类似,能够有级联修改、拒绝修改、置空值修改等3种策略选择。数据库的安全与保护第52页(2)允许修改主码当修改关系是参考关系时,还必须检验被参考关系,是否存在这么元组,其主键值等于被参考关系要修改外键值。比如要把参考关系Reports中(‘S01’,’C02’,90)元组修改为(‘S09’,’C02’,90),而Students关系中尚没有Sno=’S09’学生,这时与在参考关系中插入元组时情况类似,能够有受限修改和递归修改等2种策略选择。返回
数据库的安全与保护第53页5.3.2完整性控制综上可知,DBMS在实现参考完整性时,除了要提供定义主键、外键机制外,还需要提供不一样删除、插入和修改策略供用户选择。至于用户选择哪种策略,普通要依据应用环境实际需求来确定。返回
数据库的安全与保护第54页5.3.3触发器
触发器(Triggers):建立(附着)在某个关系(基本表)上一系列SQL语句集合(程序),它经预先编译后存放在数据库中。作用:实现一个数据库完整性保护办法。若某个关系上创建了触发器,则当用户对该关系有某种数据修改操作,比如插入、更新或删除等操作发生时,触发器就会自动被激活并执行。所以,触发器功效普通比完整性约束条件要强多,且愈加灵活。数据库的安全与保护第55页5.3.3触发器触发器与完整性约束条件比较:当系统检验数据中有违反完整性约束条件时,则仅给用户必要提醒信息;触发器功效则不但仅起提醒作用,它还会引发系统内部自动进行一些操作,以消除违反完整性约束条件所引发负面影响。在SQLServer数据库关系上怎样创建触发器,将在7.2.8节中介绍。返回数据库的安全与保护第56页5.4数据库并发控制技术先回答:DBMS为何需要并发控制技术多个程序串行执行:只当一个用户程序执行数据库存取操作结束后,另一个用户程序才能接着对数据库存取。串行执行存在不足:因为不一样用户程序在执行过程中伴随时间改变需要不一样资源,有时需要CPU,有时需要访问磁盘,有时需要I/O,有时需要通讯等,假如每时刻只让一个用户程序运行,而其它用户闲置等候,则造成许多系统资源在大部分时间内处于闲置状态。数据库的安全与保护第57页5.4数据库并发控制技术处理方案:为充分利用系统资源,发挥数据库共享资源特点,DBMS允许多个用户并行地存取数据。可能出现新问题:多个用户程序并发存取同一数据怎么办?因为对并发操作不加控制就可能造成存取和存放不正确数据,从而破坏数据库一致性。
处理方法:DBMS提供一个并发控制机制,确保不出现以上提到新问题。数据库的安全与保护第58页5.4数据库并发控制技术5.4.1事务及其特征
5.4.2数据库并发控制5.4.3并发目标
5.4.4并发所引发问题5.4.5并发控制方法
5.4.6并发调度可串行性
返回数据库的安全与保护第59页5.4.1事务及其特征在多用户环境中用户程序访问数据库时,普通需要若干个操作才能完成,且有些操作必须作为一个整体来执行。这些作为一个整体来执行操作序列称为一个事务(Transaction)。
事务:用户定义一组操作序列集合,是数据恢复和并发控制基本单位。事务执行规则:数据库系统在执行事务时,要么执行事务中全部操作,要么一个操作都不执行。程序和事务区分:一个应用程序能够由一个或多个独立事务组成。数据库的安全与保护第60页5.4.1事务及其特征定义事务方法:(1)缺省方式划分事务。(2)用事务开始与结束语句显示地控制。用户显示定义事务语句有3条:(1)BEGINTRANSACTION,该语句显示地定义一个事务开始。(2)COMMIT,该语句显示地提交一个事务,并表示该事务已正常结束。(3)ROLLBACK,该语句显示地回滚一个事务,且表示事务因执行失败而结束。数据库的安全与保护第61页5.4.1事务及其特征提交事务:将事务对数据库全部更新操作结果永久地保留到磁盘上物理数据库中去。回滚事务:撤消事务对数据库全部更新操作,使数据库恢复到该事务开始时状态。由以上可知,用户若要显示地定义事务,必须以BEGINTRANSATION开始,而以COMMIT或ROLLBACK结束。
数据库的安全与保护第62页5.4.1事务及其特征事务四个特征:原子性、一致性、隔离性和连续性,又常简称为ACID特征:1、原子性(Atomicity):一个事务是不可分割数据库逻辑工作单位。2、一致性(Concurrency):事务执行结果必须使数据库从一个一致性状态变到另一个一致性状态。3、隔离性(Isolation):一个事务执行不能被其它事务干扰。4、连续性(Durability),也称持(永)久性:一个事务一旦提交,它对数据库中数据改变是永久性,其它操作或故障不对其产生任何影响。
返回
数据库的安全与保护第63页5.4.2数据库并发控制DBMS以事务为单位进行并发控制:数据库在执行事务时,要么执行事务中全部操作,要么一个操作都不执行。串行访问(Serialaccess):当有多个事务对数据库进行操作时,各个事务按次序执行,即一个事务执行完全结束后,另一个事务才开始。并发访问(Concurrentaccess):DBMS同时接纳多个事务且各个事务在时间上重合执行。数据库的安全与保护第64页5.4.2数据库并发控制
交叉并发:在单CPU系统中各个事务交叉使用CPU,因为同一时间只能有一个事务占用CPU。
同时并发:在多CPU系统中,多个事务同时占用不一样CPU。返回数据库的安全与保护第65页5.4.3并发目标DBMS对事务采取并发机制主要目:1、改进系统资源利用率对于一个事务来讲,在不一样执行阶段需要资源不一样,有时需要CPU,有时需要访问磁盘,有时需要I/O、有时需要通信。假如事务串行执行,有些资源可能会空闲;假如事务并发执行,则能够交叉利用这些资源,有利于提升系统资源利用率。数据库的安全与保护第66页5.4.3并发目标2、改进短事务响应时间——索取空汇款单设有两个事务T1
和T2,其中T1是长事务,交付系统在先;T2是短事务,交付系统比T1稍后。假如串行执行,则T2须等T1执行完成后才能执行。则T2响应时间会很长。假如T1
和T2并发执行,则T2能够和T1重合执行,能够较快地结束,显著地改进其响应时间。T1T2T1
T2数据库的安全与保护第67页5.4.4并发引发问题例5.5设有一个飞机机票订票系统,考虑以下售票活动并发操作问题:1、售票员A经过网络在数据库中读出某航班机票余额为y张,设y=15;2、售票员B经过网络在数据库中读出某航班机票余额为y张,设y=15;3、售票员A卖出一张机票,然后修改余额为y=y1,此时,y=14,将14写会数据库;4、售票员B卖出一张机票,然后修改余额为y=y1,此时,y=14,将14写会数据库;数据库的安全与保护第68页5.4.4并发所引发问题这个售票活动并发操作结果:实际已经卖出2张机票,但在数据库中机票余额仅降低1,从而造成错误。这就是著名飞机机票订票系统问题——丢失修改。问题产生根本原因:两个用户重复交叉地使用同一个数据库而没有有效控制结果。数据库的安全与保护第69页5.4.4并发所引发问题假如事务不加控制地并发执行,会产生以下几个问题:(1)丢失修改(Lostupdate)(2)脏读(Dirtyread)。(3)不能重读(Unrepeatableread)返回数据库的安全与保护第70页(1)丢失修改(Lostupdate)当两个用户A、B读取同一数据并进行修改,而其中一个用户修改结果破坏了另一个用户修改结果,这种因为两个事务对同一数据并发地写入所引发错误称为写-写冲突(Write-writeconflict),它引发“丢失修改”前面例5.5就是这种情况。返回
数据库的安全与保护第71页(2)脏读(Dirtyread)脏读也称为读脏数据:当用户A修改数据y=100为200后,用户B读了该数据200,但用户A因某种原因撤消了对数据y修改,使y恢复了原值100,因而用户B所得到数据与数据库内数据是不一致。读脏数据是因为一个事务读另一个事务还未提交数据所引发,所以称为读-写冲突(Read-writeconflict)。返回数据库的安全与保护第72页(3)不能重读(Unrepeatableread)当用户A读取数据Z=50,接着用户B读取Z=50并修改数据Z=200,今后A再读取Z=200以进行校验时,发觉前后两次读取值不一样。所以,DBMS需要对并发操作进行适当控制,即合理地组织调度多个事务并发操作,以防止数据不一致性,这就是所谓并发控制。返回数据库的安全与保护第73页5.4.5并发控制方法
实现现数据库并发控制方法有各种,惯用有封锁技术、时标技术和版本更新技术等,而封锁技术在商品化数据库管理系统中使用得最为普遍。本节先讲封锁技术,5.4.7介绍时标技术。返回数据库的安全与保护第74页5.4.5并发控制方法(1)封锁技术(2)封锁粒度(3)封锁协议(4)死锁和活锁返回数据库的安全与保护第75页(1)封锁技术封锁:在一段时间内禁止其它用户对数据对象做一些操作,以防止产生数据不一致性问题。事务T在对某个数据对象,如表、元组等进行操作之前,先向系统发出请求,并对其加锁。当加锁成功后,事务T就对数据对象有了一定控制权,在事务T释放它锁之前,其它事务就不能更新此数据对象。返回数据库的安全与保护第76页(1)封锁技术封锁基本类型:1)排它锁(eXclusivelocks):又称X锁,假如某事务T对某数据建立了排它锁,则该事务能对该数据对象进行读、修改、插入和删除等操作,而其它事务则不能。2)共享锁(Sharedloacks):又称S锁,如某事务对某数据建立了共享锁,则此时该事务能对该数据对象进行读操作,但不能进行修改等更新操作;其它事务只能对该数据对象加S锁,而不能加X锁,即其它事务只能对该数据对象进行读操作。返回数据库的安全与保护第77页(2)封锁粒度封锁粒度:被封锁数据对象大小。在RDBMS中,封锁粒度有以下几个:属性值、属性值集、元组、关系、索引项、整个索引或整个数据库。还能够是一些物理单元:页(数据页或索引页)、簇等等。
页8k
簇行数据库的安全与保护第78页(2)封锁粒度封锁粒度与系统并发度和并发控制开销亲密相关。封锁粒度越大,系统中能够被封锁对象个数就越少,并发度也就越小,但同时系统开销也越少;封锁粒度越小,并发度越高,但系统开销也就越大。所以,假如在一个系统中能同时存在不一样大小封锁粒度对象供不一样事务选择使用,是比较理想。数据库的安全与保护第79页(3)封锁协议锁协议(Lockingprotocol):在利用X锁和S锁这两种基本锁对一定粒度数据对象加锁时必须恪守一些规则。比如,事务持锁时间长短怎样控制、何时释放所取得锁等等数据库的安全与保护第80页(3)封锁协议下面介绍三个基本封锁协议:1)一级封锁协议:某事务T若要修改某个数据对象,则必须先对该数据对象加X锁,直到事务结束才释放。可预防“丢失修改”所产生数据不一致性问题。2、二级封锁协议:一级封锁协议加上某事务T若要读取某个数据对象之前,则必须先对该数据对象加S锁,读完后即可释放S锁。可深入预防“读脏数据”问题。3、三级封锁协议:一级封锁协议加上某事务T若要读取某个数据对象之前,则必须先对该数据对象加S锁,且直到该事务结束后才可释放S锁。可深入预防数据“不可重复读”问题。数据库的安全与保护第81页(4)死锁和活锁采取封锁方法当然能够有效预防数据不一致性,但封锁不妥就会引发一些麻烦和问题,即死锁和活锁问题,其中最主要就是“死锁”(Deadlock)问题。1)活锁2)死锁数据库的安全与保护第82页1)活锁假如事务T1封锁了数据对象R后,事务T2也请求封锁R,于是T2等候。接着T3也请求封锁R。当T1释放了加在R上锁后,系统首先同意了T3请求,T2只好继续等候。接着T4也请求封锁R,T3释放R上锁后,系统又同意了T4请求,……,所以,事务T2就有可能这么永远地等候下去。以上这种情况就称为活锁(加塞儿)防止活锁简单方法:先来先服务策略。数据库的安全与保护第83页2)死锁假如事务T1封锁了数据对象A,T2封锁了数据对象B之后,T1又申请封锁数据对象B,且T2又申请封锁数据对象A。因T2已封锁了B,于是T1等候T2释放加在B上锁。因T1已封锁了A,T2也只能等候T1释放加在A上锁。这么就形成了T1在等候T2结束,而T2又在等候T1结束局面。T1和T2这两个事务永远不能结束,这就是死锁问题。事务T1死锁锁定表A请求锁定表B锁定表B请求锁定表A事务T2数据库的安全与保护第84页2)死锁处理死锁问题方法主要有两类:(I)
预防法,惯用有:(a)一次封锁法(b)次序封锁法
(II)诊疗解除法
同学们喜欢哪一类?数据库的安全与保护第85页(I)
预防法(a)一次封锁法:要求每个事务必须一次性地将所要访问数据对象全部加锁,并在操作结束后一次性释放加在全部对象上锁,这么就能预防死锁发生。
存在问题:因为数据库中数据是不停改变,原来不要求封锁数据,在执行过程中可能会变成封锁对象,所以极难事先准确地确定每个事务所要封锁数据对象,为了一次就将以后用到数据对象全部加锁,必须扩大数据封锁范围,这么降低了系统并发度,这是一次封锁法存在主要问题。数据库的安全与保护第86页(I)
预防法(b)次序封锁法:预先对数据对象要求一个封锁次序号,全部事务都按照这个次序对数据对象实施封锁,这么也能预防死锁发生。次序封锁法存在问题:因为数据库系统中封锁数据对象极多,且伴随数据插入、删除等操作而不停改变,所以要维护全部数据对象封锁次序非常困难,且成本很高。另外,事务封锁请求普通伴随事务执行而动态地决定,极难事先确定每一个事务要封锁哪些对象,所以也就极难按要求次序去施加封锁。数据库的安全与保护第87页(II)诊疗解除法诊疗解除法允许产生死锁。它利用诊疗程序发觉死锁产生后,再经过解锁程序排除死锁,所以,在这个方法中有两个程序,一个为死锁诊疗程序,用以检测死锁发生;另一个为解锁程序,一旦检测到系统已经产生死锁,则马上开启解锁程序以解除死锁。数据库的安全与保护第88页5.4.6并发调度可串行性
1.调度概念2.调度可串行性3.两段封锁协议数据库的安全与保护第89页1、调度概念(动词)调度:为若干个事务安排一个执行次序。(名词)调度:若干事务一个确定执行次序。事务串行调度(SerialSchedule):让多个事务依照一定次序执行(前者结束后者开始)调度。事务并发调度(ConcurrentSchedule):经过分时方法让计算机同时处理多个事务。数据库的安全与保护第90页1、调度概念数据库管理系统对多个事务并发操作调度是随机,而不一样调度其执行结果普通是不相同。什么样调度正确,什么样调度不正确呢?假如一个事务运行过程中没有其它事务同时运行,也就是说它没有受到其它事务干扰,那么就能够认为该事务运行结果是正常或者预想。所以将全部事务串行起来调度策略一定是正确。三个事务:1-2-3/3-2-1/2-1-3数据库的安全与保护第91页2、调度可串行性定义5.1:多个事务并发执行是正确,当且仅当其结果与按某一次序串行地执行它们时结果相同,我们称这种调度策略为可串行化(Serializable)调度。以上定义说明:一个给定并发调度是正确,当且仅当它是可串行化。数据库的安全与保护第92页2、调度可串行性例:设两个事务T1和T2分别包含以下操作:事务T1:读B;A=B+2;写回A;
事务T2:读A;B=A+2;写回B;假设A,B初值均为5,则对于以上两个事务只可能有以下两种串行调度:⑴先Tl后T2次序执行,其结果为A=7,B=9;⑵先T2后T1次序执行,其结果为B=7,A=9。因为它们都是串行调度,即使其执行结果不一样,但它们都是正确调度。下面给出这两个事务两种不一样并行调度策略及其执行过程。数据库的安全与保护第93页2、调度可串行性T1T2SlockBY=B(=5)
UnlockB
XlockAA=Y+2WriteA(=7)
UnlockA
SlockAX=A(=5)
UnlockA
XlockBB=X+2WriteB(=7)
UnlockBT1T2SlockBY=B(=5)UnlockBXlockA
A=Y+2WriteA(=7)UnlockA
SlockAWaitingWaitingWaitingX=A(=7)UnlockAXlockBB=X+2WriteB(=9)UnlockB数据库的安全与保护第94页2、调度可串行性
4、DBMS并发控制机制:提供一定伎俩来确保调度是可串行化。笨方法:在某一事务执行时禁止其它事务执行,则一定是可串行化调度。但这种方法实际上是不可取,这使用户不能充分共享数据库资源。DBMS普遍采取封锁方法实现并发操作调度可串行性,从而确保调度正确性。数据库的安全与保护第95页3、两段锁协议两段锁协议是为确保并行调度结果可串行性而提供封锁协议。定义5.2:
在一个事务中,假如加锁动作都在全部释放锁动作之前,则称此事务为两段事务。这种加锁限制即为两段锁协议(Two-phaselockingprotocol)。所谓“两段”锁含义是:事务加锁和释放锁分为两个阶段。第一阶段是取得锁,称为扩展阶段,即在对数据进行读、写之前首先申请并取得对该数据封锁;第二阶段是释放封锁,也称为收缩阶段。即事务在开始释放封锁之后,就不再申请或取得对任何数据对象封锁。数据库的安全与保护第96页3、两段锁协议定义5.3:一个事务假如恪守先加锁,后操作标准,则此事务称为合式(Wellformed)事务。定理5.1:假如全部事务都是合式两段事务,则它们调度都是可串行化。(相当与一次封锁法)锁普通都在事务结束(EndofTransaction,简称EOT)时释放,这就意味着全部锁要在收缩阶段才收缩到EOT。严格2PL协议简单可靠,应用广泛,但全部锁都要保持到EOT,不利于提升系统并发度。数据库的安全与保护第97页3、两段锁协议加锁由DBMS统一管理:DBMS提供一个锁表,记载各个数据对象加锁情况。事务假如需要对数据进行操作,须向DBMS申请,DBMS依据锁表中加锁状态和协议,同意其申请或令其等候。锁表是DBMS运行时公共资源,而且访问频繁,普通置于公共内存区。锁表内容仅反应数据资源使用暂时状态,假如系统失败,锁表内容也随之失效,无保留价值。数据库的安全与保护第98页5.4.7时标技术时标(timestamping):时间标识,是由计算机系统生成一个随时间增加正整数,普通是系统时钟,也能够是专门设计一个计数器。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025曲周县职业技术教育中心工作人员招聘考试试题
- 2025江苏省宿迁卫生中等专业学校工作人员招聘考试试题
- 中考英语冲刺写作分类仿写练习
- 实验室台柜安装专项施工方案
- 2026年医疗AI医疗设备创新报告
- 吊顶反支撑专项施工方案
- 变电站主变大修工程施工指导书
- 2026年职业教育学习内容创新报告
- 人工智能教育平台建设与校园空间智能化的协同发展模式探索教学研究课题报告
- 筹码微观结构探秘系列:如何基于九转信号捕捉短期交易性机会
- 镇静药物的使用及注意事项
- 排污许可审核方案投标文件(技术方案)
- 急救常识科普
- 用户运营考试题及答案
- 初一作文成长经历8篇范文
- 电力行业智能巡检体系建设实施方案
- 保密管理方案和措施
- 青浦区2024-2025学年六年级下学期期末考试数学试卷及答案(上海新教材沪教版)
- 华辰芯光半导体有限公司光通讯和激光雷达激光芯片FAB量产线建设项目环评资料环境影响
- 医学翻眼睑操作规范教学
- 《纳米碳酸钙在橡胶中的应用机理》课件
评论
0/150
提交评论