- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 事务与锁 掌握事务的使用方法 了解锁的相关问题,如并发性、锁定级别、死锁等 事务 事务的基本概念:事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据更改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除。 事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务. 事务的ACID属性 原子性: 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行 一致性:事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都必须是正确的。 隔离性: 由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。 持久性: 事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。 事务的ACID属性 SQL Server 提供: 锁定设备,使事务相互隔离。 记录设备,保证事务的持久性。即使服务器硬件、操作系统或 SQL Server 自身出现故障,SQL Server 也可以在重新启动时使用事务日志,将所有未完成的事务自动地回滚到系统出现故障的位置。 事务管理特性,强制保持事务的原子性和一致性。事务启动之后,就必须成功完成,否则 SQL Server 将撤消该事务启动之后对数据所作的所有修改。 事务运行模式 三种事务运行模式: 自动提交事务:每条单独的语句都是一个事务 显式事务:每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。 隐性事务:在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。 显式事务操作 事务组织结构的一般形式如下: a 定义一个事务的开始 BEGIN TRANSACTION b 提交一个事务 COMMIT TRANSACTION C 回滚事务 ROLLBACK TRANSACTION BEGIN TRANSACTION 语法: BEGIN TRAN[SACTION] [transaction_name] 功能: 标记一个显式本地事务的起始点 说明: BEGIN TRANSACTION 代表一点,如果遇上错误,在 BEGIN TRANSACTION 之后的所有数据改动都能进行回滚,以将数据返回到已知的一致状态。每个事务继续执行直到它无误地完成并且用 COMMIT TRANSACTION 对数据库作永久的改动,或者遇上错误并且用 ROLLBACK TRANSACTION 语句擦除所有改动。BEGIN TRANSACTION 为使用本语句的连接启动一个本地事务。根据当前事务隔离级别的设置情况,为支持该连接所发出的 Transact-SQL 语句而获取的许多资源被该事务锁定,直到此事务以 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 语句完成。长时间处于等待处理状态的事务会阻止其他用户访问锁定的资源。 COMMIT TRANSACTION 语法: COMMIT [TRAN [SACTION] [transaction_name] 功能:标志一个成功的隐性事务或用户定义事务的结束 说明: 不能在发出一个 COMMIT TRANSACTION 语句之后回滚事务,因为数据修改已经成为数据库的一个永久部分。如果 @@TRANCOUNT 为 1,COMMIT TRANSACTION 使得自从事务开始以来所执行的所有数据修改成为数据库的永久部分,释放连接占用的资源,并将 @@TRANCOUNT 减少到 0。如果 @@TRANCOUNT 大于 1,则 COMMIT TRANSACTION 使 @@TRANCOUNT 按 1 递减。 注:@@TRANCOUNT:返回当前连接的活动事务数 COMMIT TRANSACTION 当在嵌套事务中使用时,内部事务的提交并不释放资源或使其修改成为永久修改。只有在提交了外部事务时,数据修改才具有永久性,而且资源才会被释放。当 @@TRANCOUNT 大于 1 时,每发出一个 COMMIT TRANSACTION 命令就会使 @@TRANCOUNT 按 1 递减。当
文档评论(0)