第9章 事务和锁

第9章 事务和锁

ID:43218718

大小:78.50 KB

页数:22页

时间:2019-10-04

第9章 事务和锁_第1页
第9章 事务和锁_第2页
第9章 事务和锁_第3页
第9章 事务和锁_第4页
第9章 事务和锁_第5页
资源描述:

《第9章 事务和锁》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第9章事务和锁事物和锁是数据库的重要组成部分。在T-SQL中,通过事务将一系列不可分割的数据库操作作为整体来执行,从而保证了数据库数据的完整性和有效性。而在多用户的应用条件下,要保证事务的完整性和一致性,就需要应用锁。本章将对事务和锁的相关知识展开学习。9.1事务的概念事务是指一个工作单元,该单元可以包含多个步骤来完成全部所需的任务。在执行事务时,事务中的所有操作都会被执行。当遇到错误时,事务所执行的操作将会全部取消,同时将对事务执行回滚操作。本节将对事务的基本概念展开学习。9.1.1引入事务的原因在SQLServer2008中,通过事务处理,能够保证数据库操作的一致性和完整性。例如,由于数据

2、库是可共享的信息资源,会出现有多个用户在同一时刻访问或修改同一数据库中的同一部分数据。那么可能会由于某一个用户的行为,使另外的用户使用的数据变得无效。这时产生的数据可能会变得相互矛盾或不精确,而使用数据的用户却不知道这种情况的发生。为了解决这种问题,SQLServer2008使用事务可以确保同时发生的行为与数据的有效性不发生冲突,而且这些数据同时也可以被其他使用的用户看到。9.1.2ACID特性ACID,是指在数据库管理系统(DBMS)中事务所具有的四个特性,用来保证数据从一个地方可靠地转移到另一个地方,具体如下:原子(Atomic):事务中的所有步骤和操作都被当作原子单元。要么全部成功,要么

3、全部失败。一致(Consistent):任何事务的输出都是可预测的,所有的操作要么失败要么成功。所有操作都遵循一致性规则,并确保数据库内的数据完整性。隔离(Isolated):任何在事务之前、之中或者之后执行的操作,相关数据都处于一致的状态,而不是处于部分完成的状态。任何用户或者操作查询受事务影响的数据时,都会立即觉察到整个事务被提交了。持久(Durable):如果事务成功,数据就写到磁盘上,不会回到它原来的状态。数据不会受系统失败的影响。9.1.3事务的分类在SQLServer2008中,事务分为系统提供的事务和用户自定义事务两大类。1.系统提供的事务2.用户自定义的事务9.1.4事务日志事

4、务日志是磁盘上的一个独立文件,用于从所有用户与应用程序处收集所有成功的数据修改请求。在执行数据修改请求的过程中,事务存在于缓冲区缓存与日志缓存中。在更改内存中的数据页的过程中,页面(以及磁盘上代表要修改数据的页面)将被锁定(或者隔离),其他请求或者事务不能对这些页面进行访问。页面保持锁定状态,直到它们从事务中被释放为止。9.2事务的管理SQLServer2008中通过BEGINTRANSACTION表示一个事务的开始点,每个事务继续执行直到用COMMTTTRANSACITON提交,从而正确地完成对数据库作永久的改动,或者遇上错误用ROLLBACKTRANSACTION语句撤销所有改动。本节将对

5、这些命令具体进行学习。9.2.1事务的开始点:BEGINTRANSACTION。BEGINTRANSACTION语句用来标记一个显式本地事务的开始点,它代表由连接引用的数据在该点逻辑和物理上都保持一致。语法如下:BEGIN{TRAN

6、TRANSACTION}[{transaction_name

7、@tran_name_variable}[WITHMARK['description']]][;]9.2.2事务的执行:COMMITTRANSACTION。COMMITTRANSACTION的功能是标识一个成功的隐式事务或用户定义事务的结束,语法如下:COMMIT{TRAN

8、TRANSACTION}[t

9、ransaction_name

10、@tran_name_variable]][;]9.2.3事务的回滚:ROLLBACKTRANSACTION。ROLLBACKTRANSACTTON的功能是将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点,语法如下:ROLLBACK{TRAN

11、TRANSACTION}[transaction_name

12、@tran_name_variable

13、savepoint_name

14、@savepoint_variable][;]9.2.4SAVETRANSACTIONSAVETRANSACTION用于给事务指定保存点,其语法如下:SAVE{TRAN

15、TRANSACT

16、ION}{savepoint_name

17、@savepoint_variable}[;]9.3事务模式的分类任何对数据的修改都是在事务环境中进行的。SQLServer2008使用自动提交事务、显式事务、隐式事务三类事务模式来管理数据的修改。如果希望SQLServer2008以某种方式执行,就应明确指定,以免出现混淆。本节将分别对这几种模式进行学习。9.3.1自动提交事务模式自动提交模式是SQLSer

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。