第13章事务、批、锁和作业.ppt

上传人:s****8 文档编号:93913604 上传时间:2023-07-17 格式:PPT 页数:41 大小:987.50KB
返回 下载 相关 举报
第13章事务、批、锁和作业.ppt_第1页
第1页 / 共41页
第13章事务、批、锁和作业.ppt_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《第13章事务、批、锁和作业.ppt》由会员分享,可在线阅读,更多相关《第13章事务、批、锁和作业.ppt(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第1313章事务、批、章事务、批、锁和作业锁和作业河北工程大学河北工程大学 信电学院信电学院 崔冬崔冬数据库原理与应用数据库原理与应用SQLServer2005SQLServer2005第第1313章事务、批、锁和作业章事务、批、锁和作业 事事务务是是一一个个逻逻辑辑工工作作单单元元,SQLServer2005提提供供了了几几种种自自动动的的可可以以通通过过编编程程来来完完成成的的机机制制,包包括括事事务务日日志志、SQL事事务务控控制制语语句句,以以及及事事务务处处理理运运行行过过程程中中通通过过锁锁定定保保证证数数据据完完整整性性的的机机制制。当当用用户户对对数数据据库库并并发发访访问问

2、时时,为为了了确确保保事事务务完完整整性性和和数数据据库库一一致致性性,需要使用锁定。需要使用锁定。事务事务和和锁锁是两个紧密联系的概念。是两个紧密联系的概念。通通过过事事务务、批批和和锁锁的的使使用用,还还可可以以监监测测系系统统,以以及及优优化化物物理理数数据据库。库。作业作业是一种多步执行的任务。是一种多步执行的任务。本本章章主主要要介介绍绍SQLServer2005数数据据库库系系统统的的事事务务和和锁锁的的基基本本概概念念,事事务务、批批、锁锁的的创创建建和和使使用用,通通过过事事务务、批批、锁锁监监测测系系统统和和优优化化物理数据库的操作,以及作业的设置。物理数据库的操作,以及作业

3、的设置。SQL Server 200513.113.1事务事务 事事务务和和存存储储过过程程类类似似,由由一一系系列列T-SQL语语句句组组成成,是是SQLServer2005系系统统的的执执行行单单元元。本本节节主主要要介介绍绍SQLServer2005中事务的概念,以及事务的创建、使用。中事务的概念,以及事务的创建、使用。SQL Server 200513.1.113.1.1事务概述事务概述关关系系型型数数据据库库有有4个个显显著著的的特特征征,及及安安全全性性、完完整整性性、检检测测性性和和并并发发性性。数数据据库库的的安安全全性性就就是是要要保保证证数数据据库库数数据据的的安安全全,防

4、防止止未未授授权权用用户户随随意意修修改改数数据据库库中中的的数数据据,确确保保数数据据的的安安全全。完完整整性性是是数数据据库库的的一一个个重重要要特特征征,也也是是保保证证数数据据库库中中的的数数据据切切实实有有效效、防防止止错错误误、实实现现商商业业规规则则的的一一种种重重要要机机制制。在在数数据据库库中中,区区别别所所保保存存的的数数据据是是无无用用的的垃垃圾圾还还是是有有价价值值的的信信息息,主主要要是是依依据据数数据据库库的的完完整整性性是是否否健健全全,即即实实体体完完整整性性、域域完完整整性性和和参参考考完完整整性性。对对任任何何发发现现影影响响系系统统性性能能的的因因素素和和

5、瓶瓶颈颈,才才能能针针对对瓶瓶颈颈因因素素,采采取取切切合合实实际际策策略略,解解决决问问题题,提提高高系系统统的的性性能能。并并发发性性是是用用来来解解决决多多个个用用户户对对同同一一数数据据进进行行操操作作时时的的问问题题。特特别别是是对对于于网网络络数数据据库库来来说说,这这个个特特点点更更加加突突出出。提提高高数数据据库库的的处处理理速速度度,单单单单依依靠靠提提高高计计算算机机的的物物理理速速度度是是不不够够的的,还还必必须须充充分分考考虑数据库的并发性问题,提高数据库并发性的效率。虑数据库的并发性问题,提高数据库并发性的效率。SQL Server 200513.1.113.1.1事

6、务概述事务概述 那么如何保证并发性呢?在那么如何保证并发性呢?在SQLServer2005中,通过使用中,通过使用事务事务和和锁机制锁机制,可以解决数据库的并发性问题。,可以解决数据库的并发性问题。在在 SQL Server 2005SQL Server 2005中,事务要求处理时必须满足中,事务要求处理时必须满足ACIDACID原则,即原则,即原子性原子性()、()、一致性一致性()、()、隔离性隔离性()和()和持久性持久性()。()。原子性原子性 原子性也称为原子性也称为自动性自动性,是指事务必须执行一个完整的工作,要么,是指事务必须执行一个完整的工作,要么执行全部数据的操作,要么全部不

7、执行。执行全部数据的操作,要么全部不执行。一致性一致性 一致性是指当事务完成时,必须所有的数据具有一致的状态。一致性是指当事务完成时,必须所有的数据具有一致的状态。隔离性隔离性 隔隔离离性性也也城城为为独独立立性性,是是指指并并行行事事务务的的修修改改必必须须与与其其他他并并行行事事务务的的修修改改相相互互独独立立。一一个个事事务务处处理理数数据据,要要么么是是其其他他事事务务执执行行之之前前的的状状态态,要要么么是是其其他他事事务务执执行行之之后后的的状状态态。但但不不能能处处理理其其他正在处理的数据。他正在处理的数据。SQL Server 200513.1.113.1.1事务概述事务概述持

8、久性持久性持久性是指当一个事务完成之后,将影响永久性地存于系统中,即持久性是指当一个事务完成之后,将影响永久性地存于系统中,即事务的操作将写入数据库中。事务的操作将写入数据库中。事务的这种机制保证了一个事务或者提交后成功执行,或者提交后事务的这种机制保证了一个事务或者提交后成功执行,或者提交后失败回滚,二者必居其一,因此,事务对数据的修改具有可恢复失败回滚,二者必居其一,因此,事务对数据的修改具有可恢复性,即当事务失败时,它对数据的修改都会恢复到该事务执行前性,即当事务失败时,它对数据的修改都会恢复到该事务执行前的状态。而使用一般的批处理,则有可能出现有的语句被执行,的状态。而使用一般的批处理

9、,则有可能出现有的语句被执行,而另一些语句没有被执行的情况,从而有可能造成数据不一致。而另一些语句没有被执行的情况,从而有可能造成数据不一致。事务开始之后,事务所有的操作都陆续写到事务日志中。这些任务事务开始之后,事务所有的操作都陆续写到事务日志中。这些任务操作在操作在事务日志事务日志中记录一个标志,用于表示执行了这种操作,当中记录一个标志,用于表示执行了这种操作,当取消这种事务时,系统自动执行这种操作的反操作,保证系统的取消这种事务时,系统自动执行这种操作的反操作,保证系统的一直性。系统自动生成一个检查点机制,这个检查点周期地发生。一直性。系统自动生成一个检查点机制,这个检查点周期地发生。检

10、查点的周期是系统根据用户定义的时间间隔和系统活动的频度检查点的周期是系统根据用户定义的时间间隔和系统活动的频度由系统自动计算出来的时间间隔。检查点周期地检查事物日志,由系统自动计算出来的时间间隔。检查点周期地检查事物日志,如果在事务日志中,事务全部完成,那么检查点将事务提交到数如果在事务日志中,事务全部完成,那么检查点将事务提交到数据库中,并且在事务日志中做一个检查点提交标记。如果在事务据库中,并且在事务日志中做一个检查点提交标记。如果在事务日志中,事务没有完成,那么检查点将事务日志中的事务不提交日志中,事务没有完成,那么检查点将事务日志中的事务不提交到数据库中,并且在事务日志中做一个检查点未

11、提交标记。到数据库中,并且在事务日志中做一个检查点未提交标记。SQL Server 200513.1.213.1.2事务的类型事务的类型根据事务的设置、用途的不同,根据事务的设置、用途的不同,SQLServer2005将事将事务分为多种类型。务分为多种类型。根据系统的设置分类根据系统的设置分类 根据系统的设置,根据系统的设置,SQLServer2005将事务分为两种类型:将事务分为两种类型:系统提供的事务系统提供的事务和和用户定义的事务用户定义的事务,分别简称为系统事务,分别简称为系统事务和用户定义事务。和用户定义事务。(1 1)系统事务)系统事务 系系统统提提供供的的事事务务是是指指在在执执

12、行行某某些些语语句句时时,一一条条语语句句就就是是一一个个事事务务。但但这这是是要要明明确确,一一条条语语句句的的对对象象既既可可能能是是表表中中的的一一行行数数据,也可能是表中的多行数据,甚至是表中的全部数据。据,也可能是表中的多行数据,甚至是表中的全部数据。因此,只有一条语句构成的事务也可能包含了多行数据的处理。因此,只有一条语句构成的事务也可能包含了多行数据的处理。系统提供的事务语句如下:系统提供的事务语句如下:SQL Server 200513.1.213.1.2事务的类型事务的类型ALTER TABLE、CREATE、DELETE、DROP、FETCH、GRANT、INSERT、OP

13、EN、REBOKE、SELECT、UPDATE、TRUNCATETABLE这些语句本身就构成了一个事务。这些语句本身就构成了一个事务。例例13-113-1 使用使用CREATE TABLECREATE TABLE创建一个表。创建一个表。CREATE TABLE studentCREATE TABLE student (id CHAR(10),(id CHAR(10),name CHAR(6),name CHAR(6),sex CHAR(2)sex CHAR(2)说说明明:这这条条语语句句本本身身就就构构成成了了一一个个事事务务。这这条条语语句句由由于于没没有有使使用用条条件件限限制制,那那么么

14、这这条条语语句句就就是是创创建建包包含含3个个列列的的表表。要要么么创创建全部成功,要么全部失败。建全部成功,要么全部失败。(2 2)用户定义事务用户定义事务在在实实际际应应用用中中,大大多多数数的的事事务务处处理理采采用用了了用用户户定定义义的的事事务务来来处处理理。在在开开发发应应用用程程序序时时,可可以以使使用用BEGINTRANSACTION语句来定义明确的用户定义的事务。语句来定义明确的用户定义的事务。SQL Server 200513.1.213.1.2事务的类型事务的类型在在使使用用用用户户定定义义的的事事务务时时,一一定定要要注注意意事事务务必必须须有有明明确确的的结结束束语语

15、句句来来结结束束。如如果果不不使使用用明明确确的的结结束束语语句句来来结结束束,那那么么系系统统可可能能把把从从事事务务开开始始到到用用户户关关闭闭连连接接之之间间的的全全部部操操作作都都作作为为一一个个事事务务来来对对待待。事事务务的的明明确确结结束束可可以以使使用用两两个个语语句句中中的的一一个个:COMMIT语语句句和和ROLLBACK语语句句。COMMIT语语句句是是提提交交语语 句句,将将 全全 部部 完完 成成 的的 语语 句句 明明 确确 地地 提提 交交 到到 数数 据据 库库 中中。ROLLBACK语语句句是是取取消消语语句句,该该语语句句将将事事务务的的操操作作全全部部取取

16、消,即表示事务操作失败。消,即表示事务操作失败。还还有有一一种种特特殊殊的的用用户户定定义义的的事事务务,这这就就是是分分布布式式事事务务。例例12-112-1事事务务是是在在一一个个服服务务器器上上的的操操作作,其其保保证证的的数数据据完完整整性性和和一一致致性性是是指指一一个个服服务务器器上上的的完完整整性性和和一一致致性性。但但是是,如如果果一一个个比比较较复复杂杂的的环环境境,可可能能有有多多台台服服务务器器,那那么么要要保保证证在在多多台台服服务务器器环环境境中中事事务务的的完完整整性性和和一一致致性性,就就必必须须定定义义一一个个分分布布式式事事务务。在在这这个个分分布布式式事事务

17、务中中,所所有有的的操操作作都都可可以以涉涉及及对对多多个个服服务务器器的的操操作作,当当这这些些操操作作都都成成功功时时,那那么么所所有有这这些些操操作作都都提提交交到到相相应应服服务务器器的的数数据据库库中中,如如果果这这些些操操作作中中有有一一条条操操作作失失败,那么这个分布式事务中的全部操作都将被取消。败,那么这个分布式事务中的全部操作都将被取消。SQL Server 200513.1.213.1.2事务的类型事务的类型根据运行模式分类根据运行模式分类根据运行模式,根据运行模式,SQLServer2005将事务分为种类型:将事务分为种类型:自动提交事务自动提交事务、显显示事务示事务、隐

18、式事务隐式事务和和批处理级事务批处理级事务。(1 1)自动提交事务)自动提交事务 自动提交事务是指每条单独的语句都是一个事务自动提交事务是指每条单独的语句都是一个事务(2 2)显式事务)显式事务 显式事务指每个事务均以显式事务指每个事务均以BEGINTRANSACTION语句语句显式开始,以显式开始,以COMMIT或或ROLLBACK语句显示结束。语句显示结束。(3 3)隐式事务)隐式事务 隐式事务指在前一个事务完成时新事务隐式启动,但每隐式事务指在前一个事务完成时新事务隐式启动,但每个事务仍以个事务仍以COMMITCOMMIT或或ROLLBACKROLLBACK语句显式完成。语句显式完成。(

19、4 4)批处理级事务)批处理级事务 该事务只能应用于多个活动结果集(该事务只能应用于多个活动结果集(MARS),),在在MARSMARS会话中启动的会话中启动的T-SQLT-SQL显式或隐式事务变为批处理级事务。当批处理显式或隐式事务变为批处理级事务。当批处理完成时,没有提交或回滚的批处理几事务自动由完成时,没有提交或回滚的批处理几事务自动由SQL ServerSQL Server语句集合分语句集合分组后形成单个的逻辑工作单元。事务处理语句包括:组后形成单个的逻辑工作单元。事务处理语句包括:SQL Server 200513.1.213.1.2事务的类型事务的类型BEGINTRANSAVTIO

20、N语句。语句。COMMITTRANSACTION语句。语句。ROLLBACKTRANSACTION语句。语句。SAVETRANSACTION语句。语句。1BEGIN TRANSECTIONBEGIN TRANSECTION语句语句BEGIN BEGIN TRANSACTION TRANSACTION 语语句句定定义义一一个个显显式式本本地地事事务务的的起起点点,即即事事务务的的开开始始。其语法格式为:其语法格式为:BEGIN TRAN|TRANSACTIONBEGIN TRAN|TRANSACTIONtransaction_name transaction_name|trantran_name

21、_variable_name_variable WITH MARKWITH MARKdescriptiondescription;说明:说明:1 1、TRANSACTIONTRANSACTION关键字可以缩写关键字可以缩写TRAN。2 2、Transaction_name是是事事务务名名,TRAN_NAME_variableTRAN_NAME_variable是是用用户户定定义义的、含有效事务名称的变量,该变量必须是字符数据类型。的、含有效事务名称的变量,该变量必须是字符数据类型。3 3、WITHMARK指指定定在在日日志志中中标标记记事事务务,description是是描描述述该该标标记记的

22、字符串。的字符串。SQL Server 200513.1.213.1.2事务的类型事务的类型2 2、OMMIT TRANSACTION OMMIT TRANSACTION 语句语句 COMMIT TRANSACTION语句标志一个成功的隐式事务或显式事务的结束。其语法格式语法格式为:COMMITTRAN|TRANSACTIONtransaction_name|tran_name_variable;说说明明:仅当事务被引用所有数据的逻辑都正确时,T-SQL语句才应发出COMMITTRANSACTION 命令。当在嵌套事务中使用时,内部事务的提交并不释放资源或使其修改成为永久修改。只有在提交了外部

23、事务时,数据修改才具有永久性,而且资源才会被释放。当TRANCOUNT 大于1时,每发一个CMMIT TRANSACTION 命令只会使TRANCOUNT 按1递减。当TRANCOUNTY 最终递减为0时,将提交整个外部事务。3.ROLLBACK TRANSACTION 3.ROLLBACK TRANSACTION 语句语句 ROLLBACK TRANSACTION 语句将显示事务或隐藏事务的起点或事务内的某个保存点,它也标志一个事务的结束。其语法格式语法格式如下:SQL Server 200513.1.213.1.2事务的类型事务的类型ROLLBACK TRAN|TRANSACTIONtra

24、nsaction_name|tran_name_variable|savepoint_name|savepoint_variable;说说明明:ROLLBACK TRANSACTION 清除自事务的起点或到某个保存点所有数据修改。它还释放由事务控制的资源。Savepoint_name是 SAVE TRANSACTION 语 句 中 的savepoint_name。当条件回滚应只影响事务的一部分时,可于使用savepoint_name。savepoint_variable是用户定义的、包含有效保存点名称的变量的名称,必须是字符数据类型。4.4.SAVE TRANSACTIONSAVE TRANS

25、ACTION语句语句SAVE TRANSACTION语句在事务内设置保存点。其语语法法格格式式为:SAVE TRAN|TRANSACTIONsavepoint_name|savepoint_variable;SQL Server 200513.1.213.1.2事务的类型事务的类型说明:说明:用户可以在事务内设置保存点或标记。保存点可以定义在按条件取消某个事务的一部分后,该事务可以返回的一个位置。如果将事务回滚到保存点,则根据需要必须完成其他剩余的T-SQR 语句和COMMITTRANSACTION 语句,或者必须通过将事务回滚到起始点完全取消事务。若要取消整个事务,请用ROLLBACK TR

26、ANSACTION transaction_name 语句。这将撤消事务的所有语句和过程。Savepoint_name是分配给保存点的名称。savepoint_variable包含有效保存点名称的用户定义变量的名称。例例13132 2 定义一个事务,将所有选修了3号课程的学生的分数加10分,并提交该事务。DECLARE t_name CHAR(10)SET t_name=add_scoreBEGIN TRANSACTIONt_nameUPDATE成绩表SET 分数=分数+10WHERE 课程号=3GOCOMMIT TRANSACTION t_nameGO SQL Server 200513.1

27、.213.1.2事务的类型事务的类型说明:本例使用 BEGINTRANSATION 定义了一个事务名为 add_score的事务,之后使用COMMITTRANSACTION 提交,即执行该事务,将所有学生的分数加10分。例例13133 3定义一个事务,向库存零件表中添加一条记录,并设置保存点。然后再删除该记录,并回滚到事务的保存点,提交该事务。BEGIN TRANSACTIN INSERT INTO数据库零件表VALUES(2007,螺丝钉,100,黑,20)SAVE TRANSACTIN savepoint DELETE FROM 库存零件表WHERE 零件编号=20007ROLLBACK

28、TRANSACTION savepointCOMMIT TRANSACTIONGOSQL Server 200513.1.213.1.2事务的类型事务的类型说明:本例使用BEGINTRANSACTION定义了一个事务,向表添加一条记录,并设置保存点savepoint.之后再删除该记录,并回滚到事务的保存点savepoint处,使用COMMITTRANSACTION 提交。结果该记录没有删除。例例13134 4定义一个事务,向学生表中添加记录。如果添加成功,则给每个分数加10分。否则不操作。BEGIN TRAN INSERT INTO 学生表VALUES(234,张,男,1980-10-28,1

29、,3,null)IF error=0 BEGINPRINT 添加成功!UPDATE 成绩表SET分数=分数+10WHERE 学号=111COMMIT TRAN ENDSQL Server 200513.1.213.1.2事务的类型事务的类型ELSEBEGIN PRINT添加失败!ROLLBACK TRANENDSQL Server 200513.1.3 13.1.3 事务和批事务和批 如果用户希望或者整个操作完成,或者什么都不做,这时解决问如果用户希望或者整个操作完成,或者什么都不做,这时解决问题的方法就是将整个操作组织成一个简单的事务处理,称为题的方法就是将整个操作组织成一个简单的事务处理,

30、称为批处批处理理或或批批。例例13-513-5将多个操作定义为一个事务。BEGIN TRANSACTIONUPDATE 成绩表SET 分数=分数+10WHERE 课程号=5INSERT INTO 学生表(学号,姓名)VALUES(20123,张全)DELETE FROM 课程表WHERE 课程表WHERE 课程名 LIKE 数%COMMIT TRANSACTION说说明明:本例将多个SQR操作定义为一个事务,这时就形成了一个批处理,要么全部执行,要么都不执行。SQL Server 200513.213.2锁锁锁锁就就是是防防止止其其他他事事务务访访问问指指定定的的资资源源手手段段。锁锁是是实实

31、现现并并控控制制的的主主要要方方法法,是是多多个个用用户户能能够够同同时时操操纵纵同同一一个个数数据据库的数据而不发生数据不一致现象的重要保障。库的数据而不发生数据不一致现象的重要保障。SQL Server 200513.2.113.2.1锁概述锁概述 一般来说,锁可以防止脏读防止脏读、不可重复读不可重复读和幻觉读幻觉读。脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外严格事务读到这个数据就是脏数据,依据脏数据所做的操作可能是不正确的。不可重复读是指在一个事务内

32、,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,则第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此,称为不可重复读。幻觉读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还没有修改的数据行,就好像发生了幻觉了一样。SQL Server 200513.2.113.2.1锁概述锁概述 锁锁是防止

33、其他事务访问指定的资源控制、实现并发控制的一种手段。为了提高系统的性能、加快事务的处理速度、缩短事务的等待时间,应该使锁定的资源最小化。为了控制锁定的资源,应该首先了解系统的空间管理。在SQR SERVER 2005中,最小空间管理单位是页,一个页有8KB。所有的数据、日志、索引都存放在页上。另外,使用页有一个限制,这就是表中的一行数据必须在同一个页页上。另外,使用页有一个限制,这就是表中的一行数据必须在同一个页上,不能跨页。页上面的空间管理单位是簇簇,一个簇是8个连续的页。表和索引的最小占用单位是簇。数据库是有一个或多个表或者索引组成,即有多个簇组成。意图如图12-312-3所示。SQL S

34、erver 200513.2.213.2.2锁的模式锁的模式数据库引擎使用不同的锁定资源,这些锁模式确定了并发事务访数据库引擎使用不同的锁定资源,这些锁模式确定了并发事务访问资源的方式。根据锁定资源方式的不同,问资源的方式。根据锁定资源方式的不同,SQRSERVER2005提供了提供了4种锁模式:种锁模式:共享锁共享锁、排他锁排他锁、更新锁更新锁,意向锁意向锁。共享锁共享锁 共享锁也称为S锁锁,允许并行事务读取同一种资源,这时的事务不能修改访问的数据。当使用共享锁锁定资源时,不允许修改数据的事务访问数据。当读取数据的事务读完数据之后,立即释放所占用的资源。一般地,当使用SELECT 语句访问数

35、据时,系统自动对所访问的数据使用共享锁锁定。排他锁排他锁 对于那些修改数据的事务,例如,使用INSERT、UPDATE、DELETE语句,系统自动在所修改的事务上放置排他锁。排他锁也称X锁,就是在同一时间内只允许一个事务访问一种资源,其他事务都不能在有排他锁的资源上访问。在有排他锁的资源上,不能放置共享锁,也就是说,不允许可以产生共享锁的事务访问这些资源。只有当产生排他锁的事务结束之后,排他锁锁定的资源才能被其他事务使用。SQL Server 200513.2.213.2.2锁的模式锁的模式更新锁更新锁 更新锁也称为U锁锁,可以防止常见的死锁死锁。在可重复读或可序化事务中,此事务读取数据,获取

36、资源的共享锁,然后修改数据。此操作要求锁转换为排锁。如果两个事务获取了资源上的共享模式锁,然后试图同时更新数据,则一个事务尝试将锁转换为排他锁。共享模式到排他锁的转换必须等待一段时间,因为一个事务的排他锁与其他事务的共享模式锁不兼容,发生锁等待。第二个事务试图获取排他锁以进行更新。由于两个事务都要转换为排他锁,并且每个事务都等待另一个事务释放共享模式锁,因此发生死锁死锁。若要避免这种潜在的死锁问题,请使用更新锁更新锁。一次只有一个事务可以获得资源的更新锁。如果事务修改资源,则更新锁转换为排他锁排他锁。意向锁意向锁 SQL Server 200513.2.213.2.2锁的模式锁的模式 数据库引

37、擎使用意意向向锁锁来保护共享锁或排他锁放置在锁层次结构的底层资源上。之所以命名为意向锁,是因为在较低级别锁前可获取它们,因此,会通知意向将锁放置在较低级别上。意向锁有两种用途:防防止止其其他他事事务务以以会会使使较较低低级级别别的的锁锁无无效效的的方方式式修修改改较较高高级级别别资资源。源。提高数据库引擎在较高的粒度级别检测锁冲突的效率。提高数据库引擎在较高的粒度级别检测锁冲突的效率。意向锁又分为意意向向共共享享锁锁(ISIS)意意向向排排他他锁锁(IXIX)以及意意向向排排他他共共享享锁锁(SIXSIX)。意向共享锁表示读低层次资源的事务的意向,把共享锁放在这些单个的资源上。意向派他锁表示修

38、改低层次的事务的意向,把排他锁放在这些单个资源上。意向排他诉包括意向共享锁,它是意向共享锁的超集。使用意向排他的共享锁表示允许并行读取顶层资源的事务的意向,并且修改一些低层次的资源,把意向排他锁这些单个资源上。例如,表上的一个使用意向排它的共享锁把共享锁放在表上,允许并行读取,并且把意向排他锁放在刚要修改的页上,把排他锁放在修改的行上。每一个表一次只能有一个使用意向排他的共享锁因为表级共享锁阻止对表的任何修改。使用意向排他的共享锁和意向排他锁的组合。SQL Server 200513.2.313.2.3锁的信息锁的信息 锁锁兼兼容容性性控控制制多多个个事事务务能能否否同同时时获获取取同同一一资

39、资源源上上的的锁锁。如果资源已被另一事务锁定,则,仅当请求锁的模式与现有锁的模式兼容时,才会授予新的锁请求。如果请求锁的模式与现有的模式不兼容,则请求新锁的事务将等待释放现有锁或等待锁超时间隔过期。例如,没有与排他锁兼容的锁模式。如果具有排他锁,则在释放排他锁之前,其他事务均无法获取该资源的任何类型(共享、更新或排他)的锁。另一种情况是,如果共享锁已应用到资源,则即使第一个事务尚未完成,其他事务也可以获取该项的共享锁或更新锁。但是,在释放共享锁之前,其他事务无法获取排他锁。用户可以通过使用SQR SERVER 2005的SQRSERVER PROFILER,指定用来捕获有关跟踪中锁事件的信息的

40、锁事件类别。还可以在系统监视器系统监视器中,从锁对象指定计数器来监视数据库引擎实例中的锁级别。SQL Server 200513.2.313.2.3锁的信息锁的信息在SQR SERVERN PROFILER中查看系统锁定信息时,首先启动SQRSERVERPROFILER,其窗口如图13-113-1所示 图13-1 SQL Server Profiler 窗口SQL Server 200513.2.313.2.3锁的信息锁的信息选择系统菜单“文文件件”“新新建建跟跟踪踪”选项,新建一个跟踪事件,连接到服务器,如图13-513-5所示。图13-5连接服务器 SQL Server 2005图13-6

41、跟踪属性对话框的常规选项卡13.2.313.2.3锁的信息锁的信息连接成功,设置根据事件属性。在“跟踪属性跟踪属性”对话框的“常规常规”选项卡中,用户可以设置跟踪名称、使用模板,以及启用跟踪停止时间和将跟踪存储到指定文件,如图13-613-6所示。SQL Server 2005图13-7跟踪属性对话框的事件选择选项卡 13.2.313.2.3锁的信息锁的信息还可以将跟踪保存到指定表。在“跟踪属性跟踪属性”对话框的“事件选事件选择择”选项卡中,用户可以设置跟踪的事件以及事件的列,如图13-713-7所示。SQL Server 200513.2.313.2.3锁的信息锁的信息设置完毕,在SQLSe

42、rverProfiler中显示跟踪事件,如图13-813-8所示。图13-8 跟踪事件的显示SQL Server 200513.2.313.2.3锁的信息锁的信息同时,在SQLServerManagementStudio的对象资源管理器中,系统将新建一个新表,即设置的保存到表。打开该表,显示用户设置跟踪的事件以及事件的列。为了和SQL Server兼容,还可以使用sys.dm_tran_locks动态管理视图来替代sp_lock系统存储过程。SQL Server 200513.2.413.2.4死锁及处理死锁及处理在事务箅锁的使用过程中,死锁是一个不可避免的现象。在事务箅锁的使用过程中,死锁是

43、一个不可避免的现象。在下列两种情况下,可以发生死锁。在下列两种情况下,可以发生死锁。第第一一种种情情况况是是,当两个事务分别锁定了两个单独的对象,这时每一个事务都有要求在另外一个事务锁定的对象上获得一个锁,因此第一个事务都有必须等待另一个释放占有的锁,这时就发生了死锁,这种死锁是最典型的死锁形式。死锁的第二种情况是死锁的第二种情况是,当在一个数据库中。有若干个长时间运行的事务执行并行的操作,当查询分析器处理一种非常复杂的查询例如连接查询时,那么;由于不能控制处理的顺序,有可能发生死锁现象。当发生了死锁现象时,除非某个外部进程断开死锁,否则死锁中的两个事务都将无期等待下去。SQL Server

44、2005的SQL ServerDatabaseEngine自动检测 SQL Server中的死锁循环。SQL Server 200513.2.413.2.4死锁及处理死锁及处理数数据据库库引擎选择一个会话作为死锁牺牲,然后终止当前事务(出现错误)来打断死锁。如果监视器检测到循环依赖关系,通过自动取消其中一个事务来结束死锁。处理时间长的事务具有较高的优先级,处理时间较短的事务具有较低的优先级。在发生冲突时,保留优先级高的事务,取消优先级的事务。用 户 可 以 使 用 SQL Server Profiler确 定 死 锁 的 原 因。当SQLServer中某组资源的两个或多个线程或进程之间存在的依

45、赖关系时,将会发生死锁。使用SQLServerProfiler,可以创建记录、重播和显示死锁事件的跟踪以进行分析。若要跟踪死锁事件,请将Deadlockgraph事件类添加到跟踪。可以通过下列任一方法进行提取:在配置跟踪时,使用“事事件件提提取取设设置置”选项卡。请注意,只有在“事事件件选选择择“选项卡上选择了Deadlockgraph事件,才会出现此选项卡。如图13-1113-11所示。也可以使用“文件文件“菜单中的”提取提取SQLServer事件事件“选项,或者通过鼠标右键击特定事件并选择”提取事件数据提取事件数据“,来提取并保存各个事件。SQL Server 200513.313.3数据

46、库优化数据库优化 一一个个数数据据库库系系统统的的性性能能依依赖赖于于组组成成这这些些系系统统的的数数据据库库中中物物理理设设计计结结构构的的有有效效配配置置。这这些些物物理理设设计计结结构构包包括括索索引引、聚聚集集索索引引、索索引引视视图图和和分分区区等等,其其目目的的在在于于提提高高数数据据库库的的性性能能和和可可管管理理性性。SQLServer2005提提供供了了一一套套综综合合的的工工具具,用用于于优优化化物物理理数数据据库库的的设设计计,其其中中数数据据库库引引擎擎优优化化顾顾问问,是是分分析析一一个个或或多多个个数数据据库库上上工工作作负负荷荷(对对要要做做出出化化的的数数据据库

47、库招招待待的的一一组组T-SQL语语名名句句)的的性性能能效效果果的的工具。工具。本节主要介绍数据库引擎优化顾问的使用。本节主要介绍数据库引擎优化顾问的使用。SQL Server 200513.3.113.3.1数据库引擎优化顾问概述数据库引擎优化顾问概述数据库引擎优化顾问是一种工具工具,用于分析在一个或多个数据库中运行的工作负荷的性能效果。工作负荷是对在优化的数据库招待的一组T-SQL语句。分析数据库的工作负荷效果后,数据库引擎优化顾问会提供在SQL Server 2005 数据库中添加、删除或修改物理设计结构的建议。这些物理性能结构包括聚集索引聚集索引、非聚集索引非聚集索引、索引视图索引视

48、图和分区分区。实现这些结构之后,数据库引擎优化顾问使查询处理器能够用最短的时间性执行工作负荷任务。SQL Server 200513.3.213.3.2数据库引擎优化顾问的使用数据库引擎优化顾问的使用数据库引擎优化顾问提供了两种使用方式:图形界面。用于优化数据库、查看优化建议和报告的工具。命令行实用工具程序dta.exe。用于实现数据库引擎优化顾问在软件程序和脚本方面的功能。本节只介绍图形界面优化数据库,需要启动数据库引擎优化顾问。首先连接到服务器,如图13-913-9所示。SQL Server 200513.3.213.3.2数据库引擎优化顾问的使用数据库引擎优化顾问的使用图13-9连接服务

49、器SQL Server 200513.3.213.3.2数据库引擎优化顾问的使用数据库引擎优化顾问的使用连接成功后,进入数据库引擎优化顾问。如图13-1013-10所示。图13-10数据库引擎优化顾问 SQL Server 200513.3.213.3.2数据库引擎优化顾问的使用数据库引擎优化顾问的使用用户可以在“会话框会话框”中设置数据库优化设置。选择工作负荷文件,即由SQLServerProriler创建的事件文件。选择需要优化的数据库。如图13-1113-11所示。图13-11选择需要优化的数据库 SQL Server 200513.3.213.3.2数据库引擎优化顾问的使用数据库引擎优

50、化顾问的使用选择系统菜单“操作操作”“开始分析开始分析”选项,系统自动对数据库进行优化分析操作。优化分析结束,在“会话会话框框”中多出了3个选项:进度进度、建议建议、和报告报告。显示优化分析的进度信息,建议信息和优化报告信息。用户还可以选择系统菜单“文件文件”“新建会话新建会话”选项,新建一个会话,优化其他的数据库。SQL Server 200513.413.4习题习题 简述事务、锁的概念。简述事务、锁的概念。根据运行模式,根据运行模式,SQLServe2005将事务分为哪些类型?将事务分为哪些类型?T-SQL提供的事务处理语句包括哪些?提供的事务处理语句包括哪些?创建一个事务,将所有女生的考

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁