- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库管理系统 授课教师 吴涛 第8章 事务和锁 8.1 事务 8.2 锁 小结 */131 * * 8.1 事务 8.1.1 什么是事务 事务(transaction)是SQL Server 中的单个逻辑工作单元,也是一个操作序列,它包含了一组数据库操作命令。一个事务内的所有语句被作为一个整体执行。在事务执行过程中,如果遇到错误,则可以回滚事务,取消该事务所做的全部改变,从而保证数据库的一致性和完整性。因此,事务是一个不可分割的工作逻辑单元,一个事务中的语句要么全部正确执行,要么全部不起作用。 事务作为一个逻辑工作单元必须具有四个属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这四个属性简称ACID属性。 数据库原理与应用 7.* 8.1 事务的基本概念 事务(transaction)是构成一个完整的逻辑工作单元的数据库操作的集合 事务的ACID性质 原子性(Atomicity):一个事务中的所有操作是一个完整的工作单元,这些操作要么都发生,要么都不发生 一致性(Consistency):一个事务单独执行时的结果,应该保持数据库的正确和完整,即数据不会因事务的执行而被破坏 隔离性(Isolation):在多个事务并发执行时,系统应保证执行结果与这些事务按先后次序串行执行的结果一样,每个事务都感觉不到系统中有其它事务在并发执行 持久性(Durability):一个事务一旦成功完成后,它对数据库的改变必须是永久的,即使是发生了故障 数据库原理与应用 7.* 例子--事务的ACID性质 设在线书店中有一购书事务T,购买10本书籍A,这里stock-A和order-A分别表示书籍A的库存量和总的订购数量 T: read(stock-A); stock-A=stock-A?10; write(stock-A); read(order-A); order-A=order-A+10; write(order-A); 原子性:在事务T执行过程中的任何时刻都有可能发生系统故障,从而会造成数据库系统处于不一致状态。原子性的要求是在出现故障的情况下,部分已执行的操作其效果要撤销。保证事务的原子性是数据库中恢复管理部件的责任 如果故障发生在write(stock-A)和write(order-A)操作之间 数据库原理与应用 7.* 例子--事务的ACID性质(续) 一致性,数据库的一致状态是指它所反映的现实世界情况是正确和真实的 在这里,一致性的要求是事务的执行不改变书籍的总数量,即如果数据库在事务执行之前是一致的,那么在事务执行之后也应该是一致的。 确保单个事务的一致性是应用程序员的责任。数据库系统的完整性约束机制可以简化这项工作。 事务执行之前和执行之后的数据库状态应是一致的,事务的执行使得数据库从一个一致状态到另一个一致状态。在事务执行的过程中,数据库系统会暂时地处于不一致状态 数据库原理与应用 7.* 例子--事务的ACID性质(续) 隔离性,即使每个事务单独执行时都能保证一致性和原子性,但如果多个事务并发执行,它们的操作可能会以一种人们所不希望的方式交叉执行,从而导致数据库的不一致状态 例如,在事务T的write(stock-A)操作完成之后,在write(order-A)操作之前的某个时刻,另一个并发运行的事务在这时读取书籍A的库存量和总的订购数量进行统计,则会得到一个不一致的值 确保隔离性是数据库系统中并发控制部件的责任,它的目标是在保证正确的前提下尽可能地提高事务的并发程度 并发执行与并行执行之间的区别 数据库原理与应用 7.* 例子--事务的ACID性质(续) 持久性,一旦事务T成功完成了,它的效果就不会因任何故障而被取消 如果我们假设系统故障会导致内存数据的丢失,但已写入磁盘的数据却不会被破坏,则可以通过以下两个方法之一来实现持久性: 事务做的更新在事务结束前全部写入磁盘 在事务结束前已写到磁盘上的相关信息,足以让数据库系统在故障出现后重新启动系统时恢复事务已执行的所有更新 * * 8.2 SOL Server中的事务 1.显式事务 显式事务就是可以显式地定义事务的开始和结束的事务,这类事务又称为用户定义事务。 (1)BEGIN TRAN [SACTION] [ transaction_name | @tran_name_variable ] 标记一个显式本地事务的起始点。 (2)COMMIT TRAN[SACTION] [ transaction_name | @tran_name_variable ] 或 COMMIT WORK 标志一个成功的显式事务或隐性事务的结束
文档评论(0)