ImageVerifierCode 换一换
格式:PPTX , 页数:165 ,大小:413.46KB ,
资源ID:4163446      下载积分:20 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4163446.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     留言反馈    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(第6章数据库管理.pptx)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

第6章数据库管理.pptx

1、2024/8/8 周四1第六章第六章 数据库管理数据库管理6.1 事务6.2 数据库恢复6.3 数据库的并发控制6.4 数据库的完整性6.5 数据库的安全性2024/8/8 周四26.1 事务事务一、什么是事务二、如何定义事务三、事务的特性2024/8/8 周四3一、什么是事务一、什么是事务n事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位n事务和程序是两个概念n在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序n一个应用程序通常包含多个事务n事务是恢复和并发控制的基本单位2024/8/8 周四4二、如何定

2、义事务二、如何定义事务n显式定义方式 BEGIN TRANSACTION BEGIN TRANSACTION SQL 语句1 SQL 语句1 SQL 语句2 SQL 语句2 。COMMIT ROLLBACKn隐式方式当用户没有显式地定义事务时,DBMS按缺省规定自动划分事务2024/8/8 周四5事务结束事务结束COMMIT事务正常结束 提交事务的所有操作(读+更新)事务中所有对数据库的更新永久生效ROLLBACK事务异常终止n事务运行的过程中发生了故障,不能继续执行回滚事务的所有更新操作n事务滚回到开始时的状态2024/8/8 周四6三、事务的特性三、事务的特性(ACID特性特性)事务的AC

3、ID特性:n原子性(Atomicity)n一致性(Consistency)n隔离性(Isolation)n持续性(Durability)2024/8/8 周四71.原子性原子性n事务是数据库的逻辑工作单位n事务中包括的诸操作要么都做,要么都不做2024/8/8 周四82.一致性一致性事务执行的结果必须是使数据库从一个 一致性状态变到另一个一致性状态一致性状态:数据库中只包含成功事务提交的结果不一致状态:数据库中包含失败事务的结果2024/8/8 周四9一一致性与原子性致性与原子性银行转帐:从帐号A中取出一万元,存入帐号B。n定义一个事务,该事务包括两个操作n这两个操作要么全做,要么全不做n全做

4、或者全不做,数据库都处于一致性状态。n如果只做一个操作,数据库就处于不一致性状态。B=B+1 A=A-1BA2024/8/8 周四103.隔离性隔离性对并发执行而言一个事务的执行不能被其他事务干扰n一个事务内部的操作及使用的数据对其他并发事务是隔离的n并发执行的各个事务之间不能互相干扰2024/8/8 周四11T1的修改被的修改被T2覆盖了!覆盖了!读A=16AA-3写回A=13 读A=16 AA-1 写回A=15T2T12024/8/8 周四124.持续性持续性n持续性也称永久性(Permanence)n一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。n接下来的其他操作或故障不应该

5、对其执行结果有任何影响。2024/8/8 周四13事务的特性事务的特性 n保证事务ACID特性是事务处理的任务n破坏事务ACID特性的因素n多个事务并行运行时,不同事务的操作交叉执行n事务在运行过程中被强行停止2024/8/8 周四14第六章第六章 数据库管理数据库管理6.1 事务6.2 数据库恢复6.3 数据库的并发控制6.4 数据库的完整性6.5 数据库的安全性2024/8/8 周四156.2 数据库的恢复数据库的恢复n故障是不可避免的n计算机硬件故障n系统软件和应用软件的错误n操作员的失误n恶意的破坏n故障的影响n运行事务非正常中断n破坏数据库2024/8/8 周四16数据库恢复(续)数

6、据库恢复(续)n数据库管理系统对故障的对策nDBMS提供恢复子系统n保证故障发生后,能把数据库中的数据从错误状态恢复到某种逻辑一致的状态n保证事务ACIDn恢复技术是衡量系统优劣的重要指标2024/8/8 周四17恢复操作的基本原理恢复操作的基本原理n恢复操作的基本原理:冗余n利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据n恢复的实现技术:复杂n一个大型数据库产品,恢复子系统的代码要占全部代码的10%以上2024/8/8 周四186.2.1 恢复的实现技术恢复的实现技术恢复机制涉及的关键问题1.如何建立冗余数据n数据转储(backup)n记录日志文件(logging

7、)2.如何利用这些冗余数据实施数据库恢复2024/8/8 周四19数据转储数据转储一、什么是转储二、转储的用途2024/8/8 周四20一、什么是转储一、什么是转储n转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程。n这些备用的数据文本称为后备副本或后援副本。2024/8/8 周四21二、转储用途二、转储用途 故障发生点故障发生点 转储转储 运行事务运行事务 正常运行正常运行 Ta Ta Tb Tb Tf Tf 重装后备副本重装后备副本 重新运行事务重新运行事务恢复恢复 2024/8/8 周四22登记日志文件登记日志文件一、日志文件的内容二、日志文件的用途三、登记日志文件的原则

8、2024/8/8 周四23一、日志文件的内容一、日志文件的内容1.什么是日志文件日志文件(log)是用来记录事务对数据库的更新操作的文件2.日志文件的格式以记录为单位的日志文件以数据块为单位的日志文件2024/8/8 周四24日志文件的内容(续)日志文件的内容(续)3.日志文件内容n各个事务的开始标记(BEGIN TRANSACTION)n各个事务的结束标记(COMMIT或ROLLBACK)n各个事务的所有更新操作n与事务有关的内部更新操作日志文件中的一个日志记录(log record)2024/8/8 周四254.基于记录的日志文件基于记录的日志文件每条日志记录的内容n事务标识n操作类型(插

9、入、删除或修改)n操作对象(记录ID、Block NO.)n更新前数据的旧值(对插入操作而言,此项为空值)n更新后数据的新值(对删除操作而言,此项为空值)2024/8/8 周四26二、日志文件的用途二、日志文件的用途1用途n进行事务故障恢复n进行系统故障恢复n协助后备副本进行介质故障恢复2024/8/8 周四27三、登记日志文件的原则三、登记日志文件的原则n为保证数据库是可恢复的,登记日志文件时必须遵循两条原则n登记的次序严格按并行事务执行的时间次序n必须先写日志文件,后写数据库n写日志文件操作:把表示这个修改的日志记录 写到日志文件n写数据库操作:把对数据的修改写到数据库中2024/8/8

10、周四28登记日志文件的原则(续)登记日志文件的原则(续)n为什么要先写日志文件n写数据库和写日志文件是两个不同的操作n在这两个操作之间可能发生故障n如果先写了数据库修改,而在日志文件中没有登记下这个修改,则以后就无法恢复这个修改了n如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性2024/8/8 周四296.2.2 故障的种类故障的种类n事务故障n系统故障n介质故障2024/8/8 周四30一、事务故障一、事务故障n什么是事务故障n某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了n事务故障的常见原因n输入数据有误n运算溢

11、出n违反了某些完整性限制n某些应用程序出错n并行事务发生死锁n。2024/8/8 周四31事务故障的恢复事务故障的恢复n发生事务故障时,夭折的事务可能已把对数据库的部分修改写回磁盘n事务故障的恢复:撤消事务(UNDO)n强行回滚(ROLLBACK)该事务n清除该事务对数据库的所有修改,使得这个事务象根本没有启动过一样2024/8/8 周四32二、系统故障二、系统故障n什么是系统故障n整个系统的正常运行突然被破坏n所有正在运行的事务都非正常终止n内存中数据库缓冲区的信息全部丢失n外部存储设备上的数据未受影响2024/8/8 周四33系统故障的常见原因系统故障的常见原因n操作系统或DBMS代码错误

12、n操作员操作失误n特定类型的硬件错误(如CPU故障)n突然停电2024/8/8 周四34系统故障的恢复系统故障的恢复n 清除尚未完成的事务对数据库的所有修改n系统重新启动时,恢复程序要强行撤消(UNDO)所有未完成事务n将缓冲区中已完成事务提交的结果写入数据库n系统重新启动时,恢复程序需要重做(REDO)所有已提交的事务2024/8/8 周四35三、介质故障三、介质故障n硬件故障使存储在外存中的数据部分丢失或全部丢失n介质故障比前两类故障的可能性小得多,但破坏性大得多2024/8/8 周四36介质故障的常见原因介质故障的常见原因n硬件故障n磁盘损坏n磁头碰撞n操作系统的某种潜在错误n瞬时强磁场

13、干扰2024/8/8 周四37介质故障的恢复介质故障的恢复n装入数据库发生介质故障前某个时刻的数据副本n重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库2024/8/8 周四386.2.3 检查点技术检查点技术一、问题的提出二、检查点技术三、利用检查点的恢复策略2024/8/8 周四39一、问题的提出一、问题的提出n两个问题n搜索整个日志将耗费大量的时间nREDO处理:重新执行,浪费了大量时间2024/8/8 周四40解决方案解决方案n具有检查点(checkpoint)的恢复技术n在日志文件中增加检查点记录(checkpoint)n增加重新开始文件n恢复子系统在登录日志文件期间

14、动态地维护日志2024/8/8 周四41二、检查点技术二、检查点技术n检查点记录的内容n1.建立检查点时刻所有正在执行的事务清单n2.这些事务最近一个日志记录的地址n重新开始文件的内容n记录各个检查点记录在日志文件中的地址2024/8/8 周四422024/8/8 周四43在检查点在检查点 维护日志文件维护日志文件1.将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上。2.在日志文件中写入一个检查点记录。3.将当前数据缓冲区的所有数据记录写入磁盘的数据库中。4.把检查点记录在日志文件中的地址写入一个重新开始文件。2024/8/8 周四44三、利用检查点的恢复策略三、利用检查点的恢复策略n当事

15、务T在一个检查点之前提交 T对数据库所做的修改已写入数据库n在进行恢复处理时,没有必要对事务T执行REDO操作2024/8/8 周四45利用检查点的恢复策略(续)利用检查点的恢复策略(续)Tc(检查点检查点)Tf(系统故障系统故障)REDOUNDOUNDOREDOT2T3T4T5不要不要REDOT12024/8/8 周四46利用检查点的利用检查点的恢复步骤恢复步骤1.从重新开始文件中找到最后一个检查点记录在日志文件中的地址2 由该地址在日志文件中找到最后一个检查点记录2024/8/8 周四47利用检查点的恢复策略(续)利用检查点的恢复策略(续)2.由该检查点记录得到检查点建立时刻所有正在执行的

16、事务清单ACTIVE-LISTn建立两个事务队列nUNDO-LIST nREDO-LIST n把ACTIVE-LIST暂时放入UNDO-LIST队列,REDO队列暂为空。2024/8/8 周四48利用检查点的恢复策略(续)利用检查点的恢复策略(续)3.从检查点开始正向扫描日志文件,直到日志文件结束n如有新开始的事务Ti,把Ti暂时放入UNDO-LIST队列n如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST队列4.对UNDO-LIST中的每个事务执行UNDO操作,对REDO-LIST中的每个事务执行REDO操作2024/8/8 周四49第六章第六章 数据库管理数据库管理6

17、.1 事务6.2 数据库恢复6.3 数据库的并发控制6.4 数据库的完整性6.5 数据库的安全性2024/8/8 周四506.3.1并发操作带来的数据不一致性并发操作带来的数据不一致性n丢失修改(lost update)n不可重复读(non-repeatable read)n读“脏”数据(dirty read)2024/8/8 周四511.丢失修改丢失修改丢失修改是指事务1与事务2从数据库中读入同一数据并修改事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。2024/8/8 周四52T1T2 读A=16 AA-1 写回A=15读A=16AA-1写回A=15(a)丢失修改丢失修改飞

18、机订票系统飞机订票系统2024/8/8 周四532.不可重复读不可重复读不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。2024/8/8 周四54读B=100 BB*2写回B=200 读A=50 读B=100 求和=150 读A=50 读B=200 求和=250 (验算不对)T2T1(b)不可重复读不可重复读2024/8/8 周四553.读读“脏脏”数据数据事务1修改某一数据,并将其写回磁盘事务2读取同一数据后事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。2024/8/8

19、 周四56读C=200 读C=100 CC*2 写回C ROLLBACK C恢复为100T2T1(c)读读“脏脏”数据数据2024/8/8 周四576.3.2 封锁技术封锁技术一、什么是封锁二、基本封锁类型三、基本锁的相容矩阵四、封锁粒度五、封锁协议2024/8/8 周四58一、什么是封锁一、什么是封锁n封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁n加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。n封锁是实现并发控制的一个非常重要的技术2024/8/8 周四596.3.2 封锁技术封锁技术一、什么是封锁二、

20、基本封锁类型三、基本锁的相容矩阵四、封锁粒度五、封锁协议2024/8/8 周四60二、基本封锁类型二、基本封锁类型nDBMS通常提供了多种类型的封锁。一个事务对某个数据对象加锁后究竟拥有什么样的控制是由封锁的类型决定的。n基本封锁类型n排它锁(eXclusive lock,简记为X锁)n共享锁(Share lock,简记为S锁)2024/8/8 周四61排它锁排它锁n排它锁又称为写锁n若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁2024/8/8 周四62共享锁共享锁n共享锁又称为读锁n若事务T对数据对象A加上S锁,则其它事务只

21、能再对A加S锁,而不能加X锁,直到T释放A上的S锁2024/8/8 周四636.3.2 封锁技术封锁技术一、什么是封锁二、基本封锁类型三、基本锁的相容矩阵四、封锁粒度五、封锁协议2024/8/8 周四64三、锁的相容矩阵三、锁的相容矩阵Y=YesY=Yes,相容的请求,相容的请求N=NoN=No,不相容的请,不相容的请求求T1T2XS-XNNYSNYY-YYY2024/8/8 周四656.3.2 封锁技术封锁技术一、什么是封锁二、基本封锁类型三、基本锁的相容矩阵四、封锁粒度五、封锁协议2024/8/8 周四66一、什么是封锁粒度二、选择封锁粒度的原则2024/8/8 周四67一、什么是封锁粒度

22、一、什么是封锁粒度nX锁和S锁都是加在某一个数据对象上的n封锁的对象:逻辑单元,物理单元 例:在关系数据库中,封锁对象:n逻辑单元:属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等n物理单元:页(数据页或索引页)、物理记录等2024/8/8 周四68什么是封锁粒度(续)什么是封锁粒度(续)n封锁对象可以很大也可以很小 例:对整个数据库加锁 对某个属性值加锁n封锁对象的大小称为封锁的粒度(Granularity)n多粒度封锁(multiple granularity locking)n在一个系统中同时支持多种封锁粒度供不同的事务选择2024/8/8 周四698.7.1 封锁粒度封锁

23、粒度一、什么是封锁粒度二、选择封锁粒度的原则2024/8/8 周四70二、选择封锁粒度的原则二、选择封锁粒度的原则n封锁的粒度越 大,小,n系统被封锁的对象 少,多,n并发度 小,高,n系统开销 小,大,n选择封锁粒度:考虑封锁机构和并发度两个因素对系统开销与并发度进行权衡2024/8/8 周四71选择封锁粒度的原则(续)选择封锁粒度的原则(续)n需要处理多个关系的大量元组的用户事务:以数据库为封锁单位;n需要处理大量元组的用户事务:以关系为封锁单元;n只处理少量元组的用户事务:以元组为封锁单位2024/8/8 周四726.3.2 封锁技术封锁技术一、什么是封锁二、基本封锁类型三、基本锁的相容

24、矩阵四、封锁粒度五、封锁协议2024/8/8 周四736.3.2 封锁技术封锁技术n在运用X锁和S锁对数据对象加锁时,需要约定一些规则:封锁协议(Locking Protocol)n何时申请X锁或S锁n何时释放n 不同的封锁协议,在不同的程度上为并发操 作的正确调度提供一定的保证n常用的封锁协议:三级封锁协议2024/8/8 周四741级封锁协议级封锁协议n事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放n正常结束(COMMIT)n非正常结束(ROLLBACK)n1级封锁协议可防止丢失修改n在1级封锁协议中,如果是读数据,不需要加锁的,所以它不能保证可重复读和不读“脏”数据。2024

25、/8/8 周四751级封锁协议级封锁协议T1T2 Xlock A 获得 读A=16AA-1 写回A=15 Commit Unlock AXlock A等待等待等待等待获得Xlock A读A=15AA-1写回A=14CommitUnlock A没有丢失修改没有丢失修改2024/8/8 周四761级封锁协议级封锁协议读A=15 Xlock A 获得 读A=16 AA-1 写回A=15 RollbackUnlock AT2T1读读“脏脏”数据数据2024/8/8 周四771级封锁协议级封锁协议 Xlock B 获得 读B=100 BB*2 写回B=200 Commit Unlock B读A=50 读

26、B=100 求和=150读A=50 读B=200 求和=250 (验算不对)T2T1不可重复读不可重复读2024/8/8 周四78 2级封锁协议级封锁协议n1级封锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S锁n2级封锁协议可以防止丢失修改和读“脏”数据。n在2级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。2024/8/8 周四791级封锁协议级封锁协议Sclock A等待等待读A=15 Xlock A 获得 读A=16 AA-1 写回A=15 RollbackUnlock A(5)T2T1没有读没有读“脏脏”数据数据2024/8/8 周四802级封锁协议级封锁

27、协议不可重复读不可重复读Sclock A 获得 读A=50 Unlock A Sclock B 获得 读B=100 Unlock B 求和=150 Xlock B等待等待获得Xlock B读B=100BB*2写回B=200CommitUnlock BT2T1Sclock A 获得 读A=50 Unlock A Sclock B 获得 读B=200 Unlock B 求和=250 (验算不对)T2T1(续)2024/8/8 周四81 3级封锁协议级封锁协议n1级封锁协议+事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放n3级封锁协议可防止丢失修改、读脏数据和不可重复读。2024/8/8

28、 周四823级封锁协议级封锁协议T1T2 Slock A 读A=50 Slock B 读B=100 求和=150 读A=50 读B=100 求和=150 Commit Unlock A Unlock B Xlock B等待等待等待 等待等待等待等待等待获得Xlock B读B=100BB*2写回B=200CommitUnlock B 可重复读可重复读2024/8/8 周四833 3级封锁协议级封锁协议T1T2 Xlock C 读C=100 CC*2 写回C=200 ROLLBACK (C恢复为100)Unlock C Slock C等待等待等待等待获得Slock C读C=100Commit CU

29、nlock C不读不读“脏脏”数据数据2024/8/8 周四844封锁协议小结封锁协议小结n三级协议的主要区别n什么操作需要申请封锁n何时释放锁(即持锁时间)2024/8/8 周四85封锁协议小结封锁协议小结(续续)2024/8/8 周四866.3.3 并发操作的调度并发操作的调度一、什么样的并发操作调度是正确的二、如何保证并发操作的调度是正确的2024/8/8 周四87一、什么样的并发操作调度是正确的一、什么样的并发操作调度是正确的n计算机系统对并行事务中并行操作的调度是的随机的,而不同的调度可能会产生不同的结果。n将所有事务串行起来的调度策略一定是正确的调度策略。n如果一个事务运行过程中没

30、有其他事务在同时运行,也就是说它没有受到其他事务的干扰,那么就可以认为该事务的运行结果是正常的或者预想的2024/8/8 周四88n以不同的顺序串行执行事务也有可能会产生不同的结果,但由于不会将数据库置于不一致状态,所以都可以认为是正确的。n 几个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。这种并行调度策略称为可串行化(Serializable)的调度。2024/8/8 周四89什么样的并发操作调度是正确的(续)什么样的并发操作调度是正确的(续)n可串行性是并行事务正确性的唯一准则例:现在有两个事务,分别包含下列操作:事务1:读B;A=B+1;写回A;事务2:

31、读A;B=A+1;写回B;假设A的初值为2,B的初值为2。2024/8/8 周四90什么样的并发操作调度是正确的(续)什么样的并发操作调度是正确的(续)n对这两个事务的不同调度策略n串行执行n串行调度策略1n串行调度策略2n交错执行n不可串行化的调度n可串行化的调度2024/8/8 周四91(a)串行调度策略,正确的调度串行调度策略,正确的调度SlockBY=B=2UnlockBXlockAA=Y+1写回写回A(=3)UnlockASlockAX=A=3UnlockAXlockBB=X+1写回写回B(=4)UnlockBT1T22024/8/8 周四92(b)串行调度策略,正确的调度串行调度策

32、略,正确的调度 SlockBY=B=3UnlockBXlockAA=Y+1写回写回A(=4)UnlockASlockAX=A=2UnlockAXlockBB=X+1写回写回B(=3)UnlockBT1T22024/8/8 周四93(c)不可串行化的调度不可串行化的调度SlockBY=B=2UnlockBXlockAA=Y+1写回写回A(=3)UnlockASlockAX=A=2UnlockAXlockBB=X+1写回写回B(=3)UnlockBT1T22024/8/8 周四94(c)不可串行化的调度不可串行化的调度(续续)n由于其执行结果与(a)、(b)的结果都不同,所以是错误的调度。2024

33、/8/8 周四95(d)可串行化的调度可串行化的调度SlockBY=B=2UnlockBXlockAA=Y+1写回写回A(=3)UnlockASlockA等待等待等待等待等待等待X=A=3UnlockAXlockBB=X+1写回写回B(=4)UnlockBT1T22024/8/8 周四96(d)可串行化的调度(续)可串行化的调度(续)n由于其执行结果与串行调度(a)的执行结果相同,所以是正确的调度。2024/8/8 周四97一、什么样的并发操作调度是正确的二、如何保证并发操作的调度是正确的2024/8/8 周四98二、如何保证并发操作的调度是正确的二、如何保证并发操作的调度是正确的n为了保证并

34、行操作的正确性,DBMS的并行控制机制必须提供一定的手段来保证调度是可串行化的。n从理论上讲,在某一事务执行时禁止其他事务执行的调度策略一定是可串行化的调度,这也是最简单的调度策略,但这种方法实际上是不可行的,因为它使用户不能充分共享数据库资源。2024/8/8 周四99n保证并发操作调度正确性的方法n封锁方法:两段锁(Two-Phase Locking,简称2PL)协议2024/8/8 周四100n两段锁协议的内容1.在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁2.在释放一个封锁之后,事务不再获得任何其他封锁。2024/8/8 周四101两段锁协议(续)两段锁协议(续)n“两

35、段”锁的含义n事务分为两个阶段n 第一阶段是获得封锁,也称为扩展阶段;n 第二阶段是释放封锁,也称为收缩阶段。2024/8/8 周四102两段锁协议(续)两段锁协议(续)例:事务1的封锁序列:Slock A.Slock B.Xlock C.Unlock B.Unlock A.Unlock C;事务2的封锁序列:Slock A.Unlock A.Slock B.Xlock C.Unlock C.Unlock B;事务1遵守两段锁协议,而事务2不遵守两段协议。2024/8/8 周四103两段锁协议(续)两段锁协议(续)n并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化

36、的。所有遵守两段锁协议的事务,其并行执行的结果一定是正确的n事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件n可串行化的调度中,不一定所有事务都必须符合两段锁协议。2024/8/8 周四104两段锁协议(续)两段锁协议(续)T1Slock B读B=2Y=BXlock AA=Y+1写回A=3Unlock BUnlock AT2SlockA等待等待等待等待等待等待等待等待等待等待SlockA读读A=3Y=AXlockBB=Y+1写回写回B=4UnlockBUnlockAT1SlockB读读B=2Y=BUnlockBXlockAA=Y+1写回写回A=3UnlockAT2SlockA等待等待

37、等待等待等待等待等待等待SlockA读读A=3X=AUnlockAXlockBB=X+1写回写回B=4UnlockB(a)遵守两段锁协议遵守两段锁协议(b)不遵守两段锁协议不遵守两段锁协议T1SlockB读读B=2Y=BUnlockBXlockAA=Y+1写回写回A=3UnlockAT2SlockA读读A=2X=AUnlockAXlockB等待等待XlockBB=X+1写回写回B=3UnlockB(c)不遵守两段锁协议不遵守两段锁协议2024/8/8 周四105两段锁协议(续)两段锁协议(续)遵守两段锁协议的事务可能发生死锁T1SlockB读读B=2XlockA等待等待等待等待T2SlockA

38、读读A=2XlockB等待等待2024/8/8 周四106两段锁协议(续)两段锁协议(续)n两段锁协议与三级封锁协议n两类不同目的的协议n两段锁协议n保证并发调度的正确性n三级封锁协议n在不同程度上保证数据一致性n遵守第三级封锁协议必然遵守两段协议2024/8/8 周四107第六章第六章 数据库管理数据库管理6.1 事务6.2 数据库恢复6.3 数据库的并发控制6.4 数据库的完整性6.5 数据库的安全性2024/8/8 周四108n完整性约束是加在数据库模式上的一个具体条件,它规定什么样的数据能够存储到数据库系统当中 例:学生的年龄必须是整数,取值范围为14-29;学生的性别只能是男或女;学

39、生的学号一定是唯一的;学生所在的系必须是学校开设的系;2024/8/8 周四1096.4.1 6.4.1 完整性子系统完整性子系统n完整性约束条件定义机制完整性约束条件:数据模型的组成部分,约束数据库中数据的语义DBMS应提供定义数据库完整性约束条件的机制,并把它们作为模式的一部分存入数据库中n完整性检查机制检查用户发出的操作请求是否违背了完整性约束条件n违约反应 如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性2024/8/8 周四1106.4.2 SQL中的完整性约束中的完整性约束一、域约束二、基本表约束三、断言2024/8/8 周四111CREATE

40、DOMAIN rfee decimal(18,2)CONSTRAINT rfee_test CHECK(VALUE 0)CREATE DOMAIN mtype varchar(10)CONSTRAINT mtype_test CHECK(VALUE in(西药,中成药)一、域约束一、域约束 2024/8/8 周四112CREATE DOMAIN SexVal CHAR(2)CHECK(VALUE IN(男,女);CREATE TABLE PatientPno VARCHAR(10),Pname VARCHAR(50)NOT NULL,Psex SexVal,Page INT,Pino VARC

41、HAR(50),Pid VARCHAR(18),PRIMARY KEY(Pno)一、一、域约束域约束 2024/8/8 周四113二、基本表约束二、基本表约束n候选键定义n外键定义n检查约束2024/8/8 周四114CREATE TABLE deptDeptNo VARCHAR(10)PRIMARY KEY,DeptName VARCHAR(50)UNIQUE,ParentDeptNo VARCHAR(10),Manager VARCHAR(10)候选键定义候选键定义2024/8/8 周四115n在一个关系中,PRIMARY KEY只有一个,而UNIQUE可以声明多个nPRIMARY KEY

42、要求属性取值不能为NULL,而UNIQUE允许属性取空值,允许多个空值同时存在n在定义了UNIQUE,PRIMARY KEY 约束的属性上建立索引是十分必要的,它可以使约束的检查执行起来更有效 候选键定义候选键定义2024/8/8 周四116CREATE TABLE DoctorDno VARCHAR(10),Dname VARCHAR(50)NOT NULL,Dsex VARCHAR(2),Dage INT,Ddeptno VARCHAR(10),Dlevel VARCHAR(50),Dsalary decimal(18,2),PRIMARY KEY(Dno),CHECK(Dsex IN(男

43、,女)CHECKCHECK约束约束 2024/8/8 周四117CREATE TABLE FeeFno VARCHAR(10)PRIMARY KEY,Rno VARCHAR(10)NOT NULL,Fdatetime DATETIME,Fsum decimal(18,2),CHECK(Fsum0)CHECKCHECK约束约束 2024/8/8 周四118CREATE TABLE PatientCREATE TABLE PatientPno VARCHAR(10),Pno VARCHAR(10),Pname VARCHAR(50)NOT NULL,Pname VARCHAR(50)NOT NUL

44、L,Psex VARCHAR(2),Psex VARCHAR(2),Page INT,Page INT,Pino VARCHAR(30),Pino VARCHAR(30),Pid VARCHAR(18),Pid VARCHAR(18),PRIMARY KEY(Pno),PRIMARY KEY(Pno),CHECK(Psex IN(CHECK(Psex IN(男男,女女),),CHECK(Psex=CHECK(Psex=女女 AND test_id(Pid)=0)AND test_id(Pid)=0)CHECKCHECK约束约束 2024/8/8 周四119CREATE TABLE Recipe

45、DetailRno VARCHAR(10),Mno VARCHAR(10)NOT NULL,Mamount DECIMAL(18,0),PRIMARY KEY(Rno,Mno),CHECK(Mno IN(SELECT Mno FROM Medicine)CHECKCHECK约束约束 2024/8/8 周四120n设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码K相对应,则称F是基本关系R的外码(Foreign-Key)nR中每个元组在F上的值必须为:取空值;等于S中某个元组的主码值。外键的定义外键的定义2024/8/8 周四121CREATE TABLE Docto

46、rDno VARCHAR(10),Dname VARCHAR(50)NOT NULL,Dsex VARCHAR(2),Dage INT,Ddeptno VARCHAR(10)REFERENCES Dept(DeptNo),Dlevel VARCHAR(50),Dsalary decimal(18,2),PRIMARY KEY(Dno),CHECK(Dsex IN(男,女)外键的定义外键的定义2024/8/8 周四122CREATE TABLE RecipeDetailRno VARCHAR(10),Mno VARCHAR(10)NOT NULL,Mamount DECIMAL(18,0),PR

47、IMARY KEY(Rno,Mno),FOREIGN KEY(Mno)REFERENCES Medicine(Mno)外键的定义外键的定义2024/8/8 周四123参照完整性实现需考虑的问题参照完整性实现需考虑的问题RDBMS实现参照完整性时需要考虑n外码是否可以接受空值的问题n在被参照关系中删除元组时的问题n在参照关系中插入元组时的问题n修改关系中主码的问题2024/8/8 周四124n受限策略(RESTRICTED)这是系统的默认方式。当出现违背参照完整性规则的更新操作请求时,系统拒绝执行该操作。参照完整性约束的保证参照完整性约束的保证2024/8/8 周四125l置空策略(SET-NU

48、LL)依照参照完整性规则,外码是可以取空值的。但具体能否取空值,要根据应用环境的语义来定。2024/8/8 周四126CREATE TABLE DoctorDno VARCHAR(10)PRIMARY KEY,Dname VARCHAR(50)NOT NULL,Dsex VARCHAR(2),Dage INT,Ddeptno VARCHAR(10)REFERENCES Dept(DeptNo)ON DELETE SET NULL,Dlevel VARCHAR(50),Dsalary decimal(18,2)2024/8/8 周四127n在Doctor关系中包含有外码Deptno某元组的这一列

49、若为空值,表示这个职工尚未分配到任何具体的部门工作,和应用环境的语义是相符2024/8/8 周四128n级联策略(级联策略(CASCADECASCADE)2024/8/8 周四129CREATE TABLE RecipeDetailRno VARCHAR(10),Mno VARCHAR(10)NOT NULL,Mamount DECIMAL(18,0),PRIMARY KEY(Rno,Mno),FOREIGN KEY(Mno)REFERENCES Medicine(Mno)ON DELETE CASCADEON UPDATE CASCADE2024/8/8 周四130n在有些RDBMS中,修改

50、关系主码的操作是不允许的。只能先删除该元组,然后再把具有新主码值的元组插入到关系中。若RDBMS允许修改关系主码,则必须保证主码的唯一性和非空,否则拒绝修改。2024/8/8 周四131参照完整性的实现参照完整性的实现RDBMS在实现参照完整性时n需要向用户提供定义主码、外码的机制n向用户提供按照自己的应用要求选择处理依赖关系中对应的元组的方法2024/8/8 周四132CREATE ASSERTION CHECKCreate assertion salarycheck CHECK(Not exists(Select*from Doctor xWhere Dsalary=some(select

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服