数据库第8章.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库第8章要点

8.2.5 活锁和死锁 1.活锁 当多个事务请求封锁同一数据时,某一事务总是处于等待状态无法获得所需封锁,这种状况就称为活锁。 如何来避免活锁的发生? 采用先来先服务的策略。 8.2.5 活锁和死锁 2.死锁 事务T1和T2都需要锁定被对方已经锁定的数据对象,提出申请后互相等待对方释放锁,两个事务永远无法结束,只能继续等待。 1)预防死锁 (1)一次封锁法。 (2)顺序封锁法 8.2.5 活锁和死锁 2.死锁 2)检测并解除死锁 (1)超时法。 (2)等待图法。 检测死锁的方法: 通常是选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有的锁,使其他事务得以继续运行下去。 解除死锁的方法: 8.3 数据库恢复 数据库恢复的基本思想:在系统正常运行时建立冗余数据,保证有正确的数据以供恢复使用。 恢复的关键问题:如何来建立并使用冗余数据。 建立冗余数据的方法:备份和登记日志文件。 8.3.1 备份和日志文件 1.备份及其类型 备份:DBA定期或不定期的将数据库的部分或全部内容复制到安全的存储介质上保存起来的过程。 1)海量备份和增量备份 备份类型: 2)静态备份与动态备份 8.3.1 备份和日志文件 2.日志文件 日志:独立的文件。存储对数据库进行的所有更改,并全部记录插入、更新、删除、提交、回退等数据库变化。 (1)事务故障和系统故障的恢复必须要利用日志文件。 1)日志文件的作用: (2)在动态备份中,必须建立日志文件,备份和日志文件结合起来才能够有效地恢复数据库。 (3)在静态备份中,也可以建立日志文件。 8.3.1 备份和日志文件 2.日志文件 1)必须严格的按照并发事务的执行次序记录。 2)登记日志文件的原则 2)必须先记录日志,后写数据库。 8.3.2 SQL Server的数据库恢复机制 1.检查点 是在日志中增加的一类新的记录,可以让系统在记录日志文件期间动态的维护日志。 图8-11 检查点技术 DLPU 第8章 数据库保护 1. 事务 2.并发控制 3.数据库恢复 8.1.1 为什么要使用事务 事务是保护数据库的一致性和完整性的重要机制。 举例: 转账 8.1.2 事务的概念 事务是一种机制,是一段程序, 要么都执行, 要么都不执行。 图8-1 事务的执行方式 8.1.3 事务的特性 事务有四个特性: 1.原子性:事务是一个工作单元,作为一个整体要么都做,要么都不做。 2.一致性 :事务在完成时,必须使数据库内所有的数据都保持一致性状态。 3.隔离性 :一个事务的执行不能被其他的事务所干扰。 4.持续性 :事务一旦提交,它对数据库的改变就是永久的。 8.1.4 在SQL Server中实现事务管理 1.事务运行的三种模式 1)显式事务 BEGIN TRANSACTION:事务开始的标记。 由用户自定义,每个事务均以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK语句结束 COMMIT:提交事务,标识事务成功执行。 ROLLBACK:标识一个非正常事务结束,说明执行过程中遇到错误,事务内所修改的数据被恢复到事务执行前的状态。 8.1.4 在SQL Server中实现事务管理 1.事务运行的三种模式 2)隐式事务 隐式事务模式的启动和关闭: 该模式下,当前事务提交或回滚后,SQL Server自动开始下一个事务。 SET IMPLICIT_TRANSACTIONS ON --进入隐式事务模式 SET IMPLICIT_TRANSACTIONS OFF --关闭隐式事务模式 8.1.4 在SQL Server中实现事务管理 1.事务运行的三种模式 2)隐式事务 可以使SQL Server重新启动一个事务的语句: 所有CREATE语句 ALTER TABLE 所有DROP语句 TRUNCATE TABLE GRANT REVOKE INSERT UPDATE DELETE SELECT OPEN FETCH 表8-1 使SQL Server重新启动事务的语句 8.1.4 在SQL Server中实现事务管理 1.事务运行的三种模式 2)隐式事务 TRUNCATE TABLE语句可以让用户删除指定表中的所有数据。 下面两段程序的执行结果有何不同? USE TSG GO SET IMPLICIT_TRANSACTIONS ON GO TRUNCATE table Book ROLLBACK GO SET IMPLICIT_TRANSACTIONS OFF USE TSG GO SET IMPLICIT_TRANSACTIONS ON GO DELETE FROM Book ROLLBACK GO SET IMPLICIT_TRAN

您可能关注的文档

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档