版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章事务和锁、9.1事务和9.1.1事务是并发控制的基本单元。事务是一系列操作,这些操作要么被执行,要么不被执行。这是一个不可分割的工作单元。如果事务成功,事务中的所有数据修改都将被提交,并成为数据库的永久部分。如果事务遇到错误,必须取消或回滚,所有数据修改都会被清除。SQL Server以下列事务模式运行。(1)自动提交事务。每一条语句都是一个事务。(2)显式事务每个事务都以BEGIN TRANSACTION语句显式开始,以COMMIT或ROLL语句显式结束。(3)隐式事务当前一个事务完成时,新事务隐式开始,但是每个事务仍然通过提交或回滚语句显式完成。(4)批处理级事务只能应用于多个活动结
2、果集(MARS),并且在MARS会话中启动的Transact-SQL显式或隐式事务成为批处理级事务。9.1.2事务特性,原子性一致性隔离持久性,9.1.3事务控制语句,所有的T-SQL语句都是内部事务。SQL Server 2005还包括事务控制语句,这些语句在对SQL Server语句集进行分组后形成一个逻辑工作单元。1BEGIN TRANSACTION语句,它标记显式本地事务的起点,即事务的开始。它的语法格式是:用标记描述开始交易|交易_名称|交易_名称_变量,其中每个参数的含义如下。事务名称是事务名称。Tran_name_variable是用户定义的变量,具有有效的事务名称,必须是字符数
3、据类型。WITH MARK指定在日志中标记事务。描述是描述标签的字符串。2COMMIT TRANSACTION语句,它标志着成功的隐式事务或显式事务的结束。其语法格式为:commit trans | TRANSACTION _ name | TRANSACTION _ name _ variable,3 ROLLBACK TRANSACTION语句,该语句将显式事务或隐式事务回滚到事务的起始点或事务中的保存点。其语法格式为:roll back trans | transaction_name | trans _ name _ variable | save point _ name | sav
4、e point _ variable,其中参数TRANSACTION _ name和trans _ name _ variable的含义与BEGIN TRANSACTION语句中的相同。Savepoint_name是SAVE TRANSACTION语句中设置的保存点,当条件回滚仅影响事务的一部分时,可以使用它。保存点变量是包含有效保存点名称的用户定义的变量名。4SAVE TRANSACTION语句,SAVE TRANSACTION语句设置事务内的保存点。其语法格式为:save tran | TRANSACTION _ savepoint_name | savepoint_variable,其中
5、参数save point _ name和save point _ variable的含义与ROLL TRANSACTION语句中的含义相同。9.1.4分布式事务,当一个事务分散在多个服务器上时,它就是分布式事务。分布式事务跨越两个或多个称为资源管理器的服务器,称为事务管理器的服务器组件必须协调资源管理器之间的事务管理。9.2锁和9.2.1锁的概念锁定是一种机制,由微软的SQL Server数据库引擎用来同步多个用户同时对同一数据块的访问。通过锁定机制,可以防止脏读、不可重复读和幻觉读。9.2.2锁类型,Microsoft SQL Server数据库引擎使用不同的锁模式来锁定资源,这些锁模式决定
6、了并发事务如何访问资源。(1)共享锁共享锁,也称为S锁,允许并行事务读取相同种类的资源,然后事务不能修改访问的数据。当资源被共享锁锁定时,不允许修改数据的事务访问数据。排它锁排它锁也叫X锁,它可以防止并发事务访问资源。(3)更新锁更新锁也叫U锁,可以防止常见的死锁。更新锁用于计划将锁应用于资源。它们允许读取其他事务,但不允许再次应用锁或锁。(4)意图锁数据库引擎使用意图锁来保护共享锁(S锁)或排他锁(X锁),共享锁或排他锁位于锁层次结构的底部资源。(5)模式锁模式修改锁(Sch-M锁)用于对表执行数据定义语言(DDL)操作,如添加或删除列。当模式修改锁(Sch-M锁)生效时,禁止对表的并发访问
7、。(6)大容量更新锁当数据被大容量复制到表中,并且使用sp_tableoption指定了TABLOCK提示或设置了大容量表上的表锁选项时,将使用大容量更新锁(BU锁)。键范围锁定当使用可序列化事务隔离级别时,键范围锁定可以隐式保护包含在由Transact-SQL语句读取的记录集中的行范围。9.2.3锁的使用,微软SQL Server数据库引擎具有多粒度锁,允许一个事务锁定不同类型的资源。为了最小化锁定成本,数据库引擎会自动将资源锁定在适合任务的级别。以较小的粒度锁定(如行)可以提高并发性,但开销较高,因为如果锁定了许多行,就需要持有更多的锁。在更大的粒度中锁定(例如表)可以降低并发性,因为锁定整个表限制了其他事务对表的任何部分的访问,但是它的开销更低,因为需要维护的锁更少。9.2.4死锁,在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时这些任务将被永久阻止,从而导致死锁。除非外部进程打破死锁,否则死锁中的两个事务将无限期等待。Microsoft SQL server数据库引擎死锁监视器定期检查陷入死锁的任务。如果监视器检测到循环依赖,它将选择其中一个任务作为受害者,然后终止其事务并提示一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 常见急救知识培训
- 大气中国风故宫可编辑修改套用模板
- 岳池县农村供水一体化建设项目-大高滩水厂扩能项目水土保持方案报告表
- 某汽车零部件厂生产管理办法
- 印刷厂印刷车间安全制度
- 糖尿病患者健康管理核查表
- 2026标准化管理岗面试题及答案
- 2026编导岗位面试题库及答案
- 幼儿园教师安全职责
- 汽车基础网络安全 11
- 2025-2026学年五年级语文下册第七单元综合素养测评卷(含答案)
- 2026年过程装备资产管理与完整性的结合
- 模版-2026年2月市场销售经营分析月报看板
- 2026年供热知识试题题库及答案
- 高考化学主观题重点突破策略
- 试件留置方案和试验计划
- 2026江苏苏州市健康养老产业发展集团有限公司下属子公司招聘44人(第一批)笔试历年典型考点题库附带答案详解
- T∕HNCJ 0003-2026 城镇供水管网分区计量漏损控制技术标准
- 生产计划与调度工具产能需求预测版
- 医药经销商现场审计制度
- 【小学】【纪律主题】班会:-碎嘴子的代价【课件】
评论
0/150
提交评论