- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库保护包括数据的一致性和并发控制、安全性、备份和恢复等内容。 事务是保证数据一致性的基本手段,事务处理技术包括数据库恢复技术和并发控制技术。 第7章 数据库保护 7.1 事务 7.2 并发控制 7.3 数据库备份与恢复 7.1 事务 要让系统知道哪个动作属于一个事务,可通过标记事务的开始与结束来实现。在不同的事务处理模型中,事务的开始标记不完全一样,但事务的结束标记是一样的。事务的结束标记有两种:一种是正常结束,用COMMIT(提交)表示,也就是事务中的操作会保存到数据库中成为永久的操作;另一种是异常结束,用ROLLBACK(回滚)表示也就是事务中的操作被全部撤销,数据库回到事务开始之前的状态。 二、事务的特性 原子性(Consistency) 指事务是数据库的逻辑工作单位,事务中的操 作要么都做,要么都不做。 一致性(Atomicity) 指事务执行的结果必须是使数据库从一个一致性 状态变到另一个一致性状态。 隔离性(Isolation) 指数据库中一个事务的执行不能被其它事务干扰 持久性(Durability) 也称永久性(Permanence),指事务一旦提交, 则其对数据库中数据的改变就是永久的。 三、SQL事务处理模型 隐式事务 每一条数据操作语句都自动地成为 一个事务。 显式事务 有显式的开始和结束标记的事务 1、ISO事务处理模型 明尾暗头,即事务的开始是隐含的,而事务 的结束有明确标记。 例如: UPDATE 支付表 SET 帐户总额 = 帐户总额 - n WHERE 帐户名 = ‘A’ UPDATE 支付表 SET 帐户总额 = 帐户总额 + n WHERE 帐户名 = ‘B’ COMMIT 2、Transact-SQL事务处理模型 明头明尾。事务的开始标记是: BEGIN TRANSACTION, 事务的结束标记为: COMMIT [TRANSACTION|TRAN] 和 ROLLBACK [TRANSACTION|TRAN] 例如: BEGIN TRANSACTION UPDATE 支付表 SET 帐户总额 = 帐户总额 - n WHERE 帐户名 = ‘A’ UPDATE 支付表 SET 帐户总额 = 帐户总额 + n WHERE 帐户名 = ‘B’ COMMIT 7.2并发控制 一、并发控制概述 数据库中的数据是一个共享的资源,因此 会有很多用户同时使用数据库中的数据,也就 是在多用户系统中,可能同时运行着多个事 务,而事务的运行需要时间和一定的数据。那 么当系统中同时有多个事务在运行时,特别是 当这些事务是对同一段数据进行操作时,彼此 之间就有可能产生相互的干扰情况。 并发操作所带来的数据不一致情况有: 丢失修改、不可重复读 读“脏”数据、产生“幽灵”数据 2、读“脏数据” 指一个事务读取了某个失败事务运行过程中的数据。 3、不可重复读 4、产生“幽灵”数据 实际属于不可重复读的范畴。指当事务 T1按一定条件从数据库中读取了某些数据记 录后,事务T2删除了其中的部分记录,或者 在其中添加了部分记录,则当T1再次按相同 条件读取数据时,发现其中少了(对删除) 或多了(对插入)一些记录。这样的数据对 T1来说就是“幽灵”数据或称“幻影”数据。 二、并发控制措施 并发控制的主要方式是封锁机制,即加锁 (Locking)。 加锁就是限制事务内和事务外对数据的操作。 所谓加锁就是事务T在操作某个数据之前, 先向系统发出请求,封锁其所要使用的数据。 加锁后事务T对要操作的数据具有了一定的控制 权,在事务T释放它的锁之前,其他事务不能操 作这些数据。 基本的锁类型有两种:排它锁(也称为X锁) 和共享锁(也称S锁)。 共享锁:若事务T对数据对象A加了S锁,则事务T可以读A,但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放了A上的S锁。 排它锁:若事务T对数据对象A加了X锁,则允许T读取和修改A,但不允许其它事务再对A加任何类型的锁和进行任何操作。 排它锁和共享锁的相容矩阵 三、封锁协议 对封锁方式规定不同的规则,就形成了各 种不同级别的封锁协议。 1、一级封锁协议 一级封锁协议是:对事务T要修改的数据加 X锁,直到事务结束(包括正常结束和非正常结 束)时才释放。 一级封锁协议可以防止丢失修改,但不能 保证可重复读和不读“脏”数据。 2、二级封锁协议 二级封锁协议是:一级封锁协议加上事务 T对要
文档评论(0)