第8章 数据库保护技术要点.pptVIP

  1. 1、本文档共62页,可阅读全部内容。
  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.1 事务管理 8.1.1 事务的基本概念 8.1.2 事务的特性 8.1.3 SQL Server的事务的模式 8.1.4 事务的处理语句 8.1.5 批处理 8.1.1 事务的基本概念 事务的应用背景(1) 例1:某公司在银行中有A,B两个帐号,现在公司想从帐号A中取出1万元,存入帐号B。那么在A中取出1万元的操作和在B中增加1万元的操作要么都成功完成,要么都不做。因此,需要把这二个操作定义在一个事务中。 银行转帐:事务T从A帐户过户1¥到B帐户。 T: read(A); A := A – 1; write(A); read(B); B := B + 1; write(B); 事务的应用背景(2) 例2:考虑飞机订票系统中的一个活动序列: (1) 甲售票点读出某航班的机票余额=16; (2) 乙售票点读出同一航班的机票余额也为16; (3) 甲售票点卖出一张机票,修改余额为15,并把A写回数据库; (4) 乙售票点也卖出一张机票,也修改余额为15,并把A写回数据库。 8.1.2 事务的特性(1) 事务具有四个特性: 原子性(Atomicity)、 一致性(Consistency)、 分离性(Isolation)、 持久性(Durability)。 这四个特性也简称为ACID特性。 8.1.2 事务的特性(2) 8.1.2 事务的特性(3) 8.1.2 事务的特性(4) 8.1.3 SQL Server的事务模式 SQL Server的事务模式可分为三种: 显式事务、 隐式事务、 自动事务模式。 显式事务: 隐式事务: 自动事务模式: 8.1.4 事务处理语句 (1)定义和提交事务 (2) 回滚事务 (3) 定义存储点标记 (4) 定义、提交和回滚事务示例 (5) 事务嵌套 (6) 事务状态的变化 8.1.5 批处理 批是一组SQL语句的集合,一个批以批处理结束符号GO结束。 批中语句被一次提交给SQL Server,SQL Server将这些语句编译为一个执行单元,称做SQL Server执行计划。 GO不是SQL语句。它是在某些客户端工具中使用的符号,客户端工具将它解释为:最后一个GO上面的所有内容都应该一起发送到服务器来执行。 SQL Server批处理的示例(1) SQL Server批处理的示例(2) SQL Server批处理的示例(3) 在执行批时,如果其中任一个T-SQL语句存在语法错误,SQL Server将取消批中所有语句的执行。 例1: SELECT * FROM sales SELECT * FRO titleauthor GO 在上例中,第一个语句是正确的,第二个语句存在语法错误,但由于这两个语句是在一个批中,第一个语句不会被执行,执行这个批的结果是返回一个错误信息。 建立批时应注意的事项 批和事务的区别 批是一个客户端的基本概念,它控制多个语句如何发送到SQL Server以便立即处理。而事务是一个服务器端的概念,是SQL Server执行T-SQL语句的基本工作单元。 批语句的组合发生在编译时刻,而事务中语句的组合发生在执行时刻。 当在编译时,如果批中某个语句存在语法错误,SQL Server将取消这个批中所有语句的执行。在执行时刻,如果事务中某个数据修改操作违犯约束、规则、触发器等条件时,SQL Server将回滚整个事务。 在一个批中可以包含多个事务,在一个事务中也可以包含多个批。 一个事务中包含批的示例 一个批中包含多个事务示例 8.2 并发控制和锁的管理 8.2.1 并发控制 数据库是一个共享资源,可供多个用户使用。允许多个用户同时使用的数据库系统称为多用户数据库系统。例如:银行数据库系统、机票订票数据库系统等。 并发所引起的问题 事务如果不加控制地并发执行,会产生下列三个问题: 丢失更新 (lost update) 读脏数据 (dirty read) 读值不可复现 (unrepeatable read) 丢失更新 右图是事务T1和T2并发执行的情况。如果x的初始值为5,则x的结果值为15。即T1对x的更新被丢失。 读脏数据(1) 右图中,T1对某元组t的两个属性x,y进行更新,T2并发地读取 t[x],t[y],x在更新前读,y在更新后读,这样所读得的值既不反映 t 更新前的状态,也不反映 t更新后的状态,是不一致的数据。 读脏数据(2) 可能会读到脏数据的另一种情况:当T2计算某种聚集函数(例如AVG)时,要用到多个元组的某一属性值(例如工资),如果T1并发地修改工资值,则 T2 在计算平均工资时,有些可能是修改前的工资值,有些可能是修改后的工资值,这也是一种

文档评论(0)

风凰传奇 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档