




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9章 事务和锁,事物和锁是数据库的重要组成部分。在T-SQL中,通过事务将一系列不可分割的数据库操作作为整体来执行,从而保证了数据库数据的完整性和有效性。而在多用户的应用条件下,要保证事务的完整性和一致性,就需要应用锁。本章将对事务和锁的相关知识展开学习。,9.1 事务的概念,事务是指一个工作单元,该单元可以包含多个步骤来完成全部所需的任务。在执行事务时,事务中的所有操作都会被执行。当遇到错误时,事务所执行的操作将会全部取消,同时将对事务执行回滚操作。本节将对事务的基本概念展开学习。,9.1.1 引入事务的原因,在SQL Server 2008中,通过事务处理,能够保证数据库操作的一致性和完
2、整性。例如,由于数据库是可共享的信息资源,会出现有多个用户在同一时刻访问或修改同一数据库中的同一部分数据。那么可能会由于某一个用户的行为,使另外的用户使用的数据变得无效。这时产生的数据可能会变得相互矛盾或不精确,而使用数据的用户却不知道这种情况的发生。为了解决这种问题,SQL Server 2008使用事务可以确保同时发生的行为与数据的有效性不发生冲突,而且这些数据同时也可以被其他使用的用户看到。,9.1.2 ACID特性,ACID,是指在数据库管理系统(DBMS)中事务所具有的四个特性,用来保证数据从一个地方可靠地转移到另一个地方,具体如下: 原子(Atomic):事务中的所有步骤和操作都被
3、当作原子单元。要么全部成功,要么全部失败。 一致(Consistent):任何事务的输出都是可预测的,所有的操作要么失败要么成功。所有操作都遵循一致性规则,并确保数据库内的数据完整性。 隔离(Isolated):任何在事务之前、之中或者之后执行的操作,相关数据都处于一致的状态,而不是处于部分完成的状态。任何用户或者操作查询受事务影响的数据时,都会立即觉察到整个事务被提交了。 持久(Durable):如果事务成功,数据就写到磁盘上,不会回到它原来的状态。数据不会受系统失败的影响。,9.1.3 事务的分类,在SQL Server 2008中,事务分为系统提供的事务和用户自定义事务两大类。 1系统提
4、供的事务 2用户自定义的事务,9.1.4 事务日志,事务日志是磁盘上的一个独立文件,用于从所有用户与应用程序处收集所有成功的数据修改请求。在执行数据修改请求的过程中,事务存在于缓冲区缓存与日志缓存中。在更改内存中的数据页的过程中,页面(以及磁盘上代表要修改数据的页面)将被锁定(或者隔离),其他请求或者事务不能对这些页面进行访问。页面保持锁定状态,直到它们从事务中被释放为止。,9.2 事务的管理,SQL Server 2008中通过BEGIN TRANSACTION表示一个事务的开始点,每个事务继续执行直到用COMMTT TRANSACITON提交,从而正确地完成对数据库作永久的改动,或者遇上错
5、误用ROLLBACK TRANSACTION语句撤销所有改动。本节将对这些命令具体进行学习。,9.2.1 事务的开始点:BEGIN TRANSACTION。,BEGIN TRANSACTION语句用来标记一个显式本地事务的开始点,它代表由连接引用的数据在该点逻辑和物理上都保持一致。语法如下: BEGIN TRAN | TRANSACTION transaction_name | tran_name_variable WITH MARK description ; ,9.2.2 事务的执行:COMMIT TRANSACTION。,COMMIT TRANSACTION的功能是标识一个成功的隐式事务
6、或用户定义事务的结束,语法如下: COMMIT TRAN | TRANSACTION transaction_name | tran_name_variable ; ,9.2.3 事务的回滚:ROLLBACK TRANSACTION。,ROLLBACK TRANSACTTON的功能是将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点,语法如下: ROLLBACK TRAN | TRANSACTION transaction_name | tran_name_variable| savepoint_name | savepoint_variable ; ,9.2.4 SAVE TRANSA
7、CTION,SAVE TRANSACTION用于给事务指定保存点,其语法如下: SAVE TRAN | TRANSACTION savepoint_name | savepoint_variable ; ,9.3 事务模式的分类,任何对数据的修改都是在事务环境中进行的。SQL Server 2008使用自动提交事务、显式事务、隐式事务三类事务模式来管理数据的修改。如果希望SQL Server 2008以某种方式执行,就应明确指定,以免出现混淆。本节将分别对这几种模式进行学习。,9.3.1 自动提交事务模式,自动提交模式是SQL Server 数据库引擎的默认事务管理模式。每个Transact-
8、SQL语句在完成时,都被提交或回滚。如果一个语句成功地完成,则提交该语句;如果遇到错误,则回滚该语句。只要没有显式事务或隐性事务覆盖自动提交模式,与数据库引擎实例的连接就以此默认模式操作。自动提交模式也是ADO、OLE DB、ODBC和DB库的默认模式。,9.3.2 显式事务模式,所谓显式事务是指事务中存在显式的BEGIN TRANSACTION语句,后跟一个或多个相关的数据修改语句,并以显式的COMMIT TRANSACTION语句结束。错误检查加在COMMIT TRANSACTION语句之前。这样,如果操作有错,事务可以通过ROLLBACK TRANSACTION语句来撤消。,9.3.3
9、隐式事务模式,隐式事务遵循其他一些数据库产品的行为规范,只要进行数据修改,就隐式地开始一个事务。然而,在执行显式的COMMIT TRANSACTION或者ROLLBACK TRANSACTION语句,事务是不会完成的。使用SET IMPLICIT_ TRANSACTION ON命令可以在单个连接上激活隐式事务。 如果设置为ON,SET IMPLICIT_TRANSACTIONS会将连接设置为隐式事务模式。如果设置为OFF,则使连接恢复为自动提交事务模式。在BEGIN TRANSACTION语句启动显式事务或隐性事务设置为开启之前,与数据库引擎实例的连接一直以自动提交模式操作。当提交或回滚显式事
10、务或关闭隐性事务模式时,连接将返回到自动提交模式。,9.4 锁的概念,对于SQL Server而言,锁定是一个至关重要的功能。通过使用锁机制,能够保证多用户并发访问数据库的有效性和一致性,本节将对锁机制的应用展开学习。,9.4.1 没有锁导致的问题,如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题,这些问题包括以下几种情况。 1丢失或覆盖更新 2未确认的相关性(脏读) 3不一致的分析(不能重复读) 4幻读,9.4.2 SQL Server中锁的模式,SQL Server采用了几种锁定模式,包括共享锁、排他锁、更新锁以及意向锁,再加上这些类型的一些变种。
11、通过锁的设置,可以实现良好的数据访问控制。锁的模式决定了一个并发请求的锁是否兼容(已经存在的锁)。 1共享锁(shared locks) 2排他锁(exclusive locks) 3更新锁(update locks) 4意向锁(intent locks) 5转换锁(conversion locks) 6特殊锁定模式,9.4.3 sys.dm_tran_locks视图,如图9.2所示,sys.dm_tran_locks视图对每个锁都进行追踪,并且包含了被锁定资源(如行、键或者分页)、锁的模式以及特定资源的一个标识符(identifier)。,9.4.5 在SQL Server 2008中查看锁
12、的信息,在SQL Server 2008中使用活动监视器可以获取有关SQL Server 进程的信息,其中就包括进程对应的锁的信息。单击【工具】|【选项】命令,弹出【选项】对话框,如图9.4所示。在【启动时】选择框中选择【打开对象资源管理器和活动监视器】选项。,9.5 死锁及其防止,封锁机制的引入能解决并发用户的数据不一致性问题,但也会引起事务间的死锁问题。死锁的主要原因是由于两个或更多的事务竞争资源而直接或间接地相互等待而造成的。 通常,根据使用不同的锁类型锁定资源。然而当某组资源的两个或多个线程之间有循环相关性时,就会发生死锁现象。在数据库中解决死锁常用的方法有: 要求每个事务一次就将要使用的数据全部加锁,否则就不能继续执行。 预先规定一个顺序,所有事务都按这个顺序实行加锁,这样也不会发生死锁。例如,通过SET DEADLOCK PRIORITY语句设置会话的优先级,如果设置为LOW说明该会话的优先级较低,再出死锁时,首先中断该会话的事务。 允许死锁发生,系统采用某些方式诊断当前系统中是否有死锁发生。,9.6 小结,本章中学习了事务的基本概念
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年陕西省咸阳市永寿县蒿店中学中考一模地理试题(原卷版+解析版)
- 2.3 声的利用 说课稿2025年初中 人教版物理八年级上册
- 新能源项目经理应聘简历
- 思想汇报心得体会
- 医院项目需求回复函
- 2025年广东省佛山市南海区中考一模英语试题(原卷版+解析版)
- 项目执行阶段成果汇报及后期规划
- 住宅销售代理合同
- 目前光伏发电产品主要用于哪些方面
- 基于大数据的农业现代化种植模式优化方案
- 幼儿园课件:《黑夜我不怕》
- 2024年-急诊气道管理共识课件
- 2024年江苏食品药品职业技术学院单招职业技能测试题库及答案解析
- 活动招商合同
- 标准化法及相关知识课件
- 新视野大学英语(第四版)读写教程1(思政智慧版)课件 Unit 6 Winning is not everything Section B
- 意识障碍诊疗规范2023版
- 仪表检修规程
- 2023年10月自考03706思想道德修养与法律基础试题及答案含评分标准
- 工厂组织架构图
- 全国IP地址段中国IP地址段各省IP段IP段最全
评论
0/150
提交评论