第9章 事 务 与 锁.ppt_第1页
第9章 事 务 与 锁.ppt_第2页
第9章 事 务 与 锁.ppt_第3页
第9章 事 务 与 锁.ppt_第4页
第9章 事 务 与 锁.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章 事 务 与 锁,9.1 事 务,9.1.1 事务的概念 事务是并发控制的基本单位。所谓事务,就是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。,如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据修改均被清除。,SQL Server以下列事务模式运行。 (1)自动提交事务 每条单独的语句都是一个事务。 (2)显式事务 每个事务均以BEGIN TRANSACTION语句显式开始,以COMMIT或ROLLBACK语句显式结束。,(3)隐式事务 在前一个事务完成时新事务隐式启动,但每个

2、事务仍以COMMIT或ROLLBACK语句显式完成。,(4)批处理级事务 只能应用于多个活动结果集(MARS),在MARS会话中启动的Transact-SQL显式或隐式事务变为批处理级事务。,9.1.2 事务的特性,原子性 一致性 隔离性 持久性,9.1.3 事务控制语句,所有的T-SQL语句都是内在的事务。SQL Server 2005还包括事务控制语句,将SQL Server语句集合分组后形成单个的逻辑工作单元。,1BEGIN TRANSACTION语句,BEGIN TRANSACTION语句标记一个显式本地事务的起始点,即事务的开始。 其语法格式为: BEGIN TRAN | TRANS

3、ACTION transaction_name | tran_name_variable WITH MARK description ,其中各参数的含义如下。 transaction_name是事务名。 tran_name_variable是用户定义的、含有有效事务名称的变量,该变量必须是字符数据类型。 WITH MARK指定在日志中标记事务。 description是描述该标记的字符串。,2COMMIT TRANSACTION语句,COMMIT TRANSACTION语句标志一个成功的隐式事务或显式事务的结束。 其语法格式为: COMMIT TRAN | TRANSACTION transa

4、ction_name | tran_name_variable ,3ROLLBACK TRANSACTION语句,ROLLBACK TRANSACTION语句将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点。其语法格式为: ROLLBACK TRAN | TRANSACTION transaction_name | tran_name_variable | savepoint_name | savepoint_variable ,其中,参数transaction_name和tran_name_variable的含义与BEGIN TRANSACTION语句中一样。 savepoint_n

5、ame是SAVE TRANSACTION语句中设置的保存点,当条件回滚只影响事务的一部分时,可使用savepoint_name。,savepoint_variable是用户定义的、包含有效保存点名称的变量名。,4SAVE TRANSACTION语句,SAVE TRANSACTION语句在事务内设置保存点。其语法格式为: SAVE TRAN | TRANSACTION savepoint_name | savepoint_variable 其中,参数savepoint_name和savepoint_variable的含义与ROLLBACK TRANSACTION语句中的一样。,9.1.4 分布式

6、事务,当一个事务分散在多个服务器上时,它就是分布式事务。 分布式事务跨越两个或多个称为资源管理器的服务器,称为事务管理器的服务器组件必须在资源管理器之间协调事务管理。,9.2 锁,9.2.1 锁的概念 锁定是Microsoft SQL Server Database Engine用来同步多个用户同时对同一个数据块的访问的一种机制。 通过锁机制,可以防止脏读、不可重复读和幻觉读。,9.2.2 锁的类型,Microsoft SQL Server Database Engine使用不同的锁模式锁定资源,这些锁模式确定了并发事务访问资源的方式。 (1)共享锁 共享锁也称为S锁,允许并行事务读取同一种资

7、源,这时的事务不能修改访问的数据。当使用共享锁锁定资源时,不允许修改数据的事务访问数据。,(2)排他锁 排他锁也称为X锁,它可以防止并发事务对资源进行访问。 (3)更新锁 更新锁也称为U锁,它可以防止常见的死锁。更新锁用来预定要对资源施加锁,它允许其他事务读,但不允许再施加锁或锁。,(4)意向锁 数据库引擎使用意向锁来保护共享锁(S锁)或排他锁(X锁),放置在锁层次结构的底层资源上。,(5)架构锁 执行表的数据定义语言(DDL)操作(例如添加列或删除列)时使用架构修改锁(Sch-M锁)。在架构修改锁(Sch-M锁)起作用的期间,会防止对表的并发访问。,(6)大容量更新锁 当将数据大容量复制到表

8、,且指定了TABLOCK提示或者使用sp_tableoption设置了table lock on bulk表选项时,将使用大容量更新锁(BU锁)。,(7)键范围锁 在使用可序列化事务隔离级别时,对于Transact-SQL语句读取的记录集,键范围锁可以隐式保护该记录集中包含的行范围。,9.2.3 锁的使用,Microsoft SQL Server Database Engine具有多粒度锁定,允许一个事务锁定不同类型的资源。为了尽量减少锁定的开销,数据库引擎自动将资源锁定在适合任务的级别。锁定在较小的粒度(例如行)可以提高并发度,但开销较高,因为如果锁定了许多行,则需要持有更多的锁。,锁定在较大的粒度(例如表)可以降低并发度,因为锁定整个表限制了其他事务对表中任意部分的访问,但其开销较低,因为需要维护的锁较少。,9.2.4 死锁,在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁。,除非某个外部进程断开死锁,否则死锁中的两个事务都将无限期等待下去。 Microsoft SQL Server Database Engine死锁监视器定期检查陷入死锁的任务。如果监视器检测到循环依赖关系,将选择其中一个任务作为牺牲品,然

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论