第8章_数据库保护.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章_数据库保护

第8章 数据库保护 为了保证数据库中数据的安全可靠和正确有效,DBMS必须提供一套有效的数据保护功能。数据保护包括数据的安全性、完整性、并发控制和故障恢复。 数据库的一个显著特点是数据的共享,各个事务程序都可以访问数据库中的数据。如果各个事务串行工作,即一个事务执行结束后才开始另一个事务,情况就简单多了。但如果多个事务并行工作,即同时有几个事务在执行,情况就比较复杂,因为并行工作的各个事务可能会造成数据库中数据的不一致。也会引起其它一些意外情况的发生。 保证数据库的安全性与完整性的各种措施,并不能避免因各种意外情况,如硬件故障、操作失误甚至人为的恶意破坏,所造成的事务的非正常中断而导致数据库中数据的丢失。所以必须有安全措施能恢复数据库到一个已知的正确状态。 数据库中数据的完整性保护,由DBMS提供的完整性检查机制来实现。该机制会自动检查数据库中数据,看其是否符合完整性约束条件。完整性约束条件作为数据库模式的一部分存储在数据库中。有关这方面的内容,前已述及。本章将学习数据库保护中有关并发控制、故障恢复和安全性等方面的内容。 本章内容: 8.1 并发控制 8.1.1 并发可能出现的问题 8.1.2 封锁(Locking) 8.1.3 三级封锁协议 8.1.4 加锁请求的选择策略和活锁 8.1.5 死锁 8.1.6 并发调度的可串行性 8.1.7 两段封锁协议 8.1.8 多粒度封锁 8.1.9 意向锁 8.2 数据库恢复技术 8.2.1 故障的种类 8.2.2 故障恢复的手段 8.2.3 恢复方法 8.3 数据库安全 8.3.1 用户标识和监别 8.3.2 访问控制 8.3.3 强制存取控制方法 8.3.4 视图和查询修改 8.3.5 跟踪审计 8.3.6 数据加密 8.1 并发控制 串行访问(serial access):事务都是顺序执行的,即一个事务结束后才能运行另一事务。 并行访问(concurrent access):多个事务同时执行。 交叉并发(interleaved concurrency) 单CPU系统中,多个事务交叉使用CPU 同时并发(simaltaneous concurrency) 多CPU系统中,多个事务同时占用CPU 并发操作的两个好处: 提高系统的资源利用率。一个事务在不同的执行阶段需要的系统资源是不同的,CPU、通信、输入设备、…。串行工作会造成资源空闲。并发执行可以交叉使用各种资源,提高资源利用率。 改善短事务的响应时间。两个事务T1和T2,T1执行时间较长,T2所需时间很短。串行执行时若T1比T2稍早执行,则T2要等很长时间才能得到响应。而在并发情况下,T2可与T1并发执行,响应时间明显缩短。 8.1.1 并发可能出现的问题 不加控制的并发操作,可能引起数据的不一致性有:丢失更新、读脏数据和不可重复读。 以上三种数据不一致性产生的原因在于:一个事务未执行完时,就开始执行另一事务了。如果一个事务在修改数据时,其他事务不得修改同一数据,就不会产生丢失更新的情况;如果一个事务在更新数据时,其他事务不得读取该数据,则不会产生读脏数据的情况,也不会产生不可重复读的情况。这就是封锁(Locking)的目的。 8.1.2 封锁 (Locking) 封锁是实现并发控制的一个非常重要的技术。封锁可避免并发操作可能出现的问题。 某事务在对某数据对象(如:表、记录等)执行操作前,首先必须对此对象加上自己的锁。加锁成功后,才能执行相应的操作,而此时其他事务对该对象的操作就受到了规定的限制。该事务完成自己的操作之后,必须把先前加上的锁撤销,以便使其他事务可以执行各自的操作。 锁的基本类型有两种: 排它锁(Exclusive Lock,简称X锁、写锁) 共享锁(Share Lock,简称S锁、读锁) 8.1.3 三级封锁协议 对数据对象加锁时,还需要约定一些封锁规则:如何时能申请加锁、持锁的时间、何时才能释放锁等。约定的这些加锁规则称为封锁协议(Locking Protocol)。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。下面学习三级封锁协议: 一级封锁协议: 任一事务在修改某数据之前,必须先对其加上自己的X锁,直至事务结束后才能释放之。事务结束包括正常结束(Commit)和非正常结束(Rollback)。在一级封锁协议中,如果仅仅是读数据而不对其进行修改,是不需要加锁的。 所以一级封锁协议解决了丢失修改问题,但不能保证可重复讯和不读“脏”数据。 二级封锁协议,内容包括: 一级封锁协议; 任一事务在读取某数据前,必须先对其加上S锁,读完后即可释放S锁; 二级封锁协议

文档评论(0)

kakaxi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档