第09章 事务和锁.ppt





《第09章 事务和锁.ppt》由会员分享,可在线阅读,更多相关《第09章 事务和锁.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SQL Server 2005SQL Server 2005 数据库数据库应用与开发应用与开发制作:姜桂洪制作:姜桂洪联系方式:联系方式:Saturday,July 15,2023Saturday,July 15,2023清华大学出版社.SQL Server 2005数据库应用与开发 第第09章章 事务和锁事务和锁内容提要内容提要n n事务是由一系列的数据操作命令组成,是数据库事务是由一系列的数据操作命令组成,是数据库事务是由一系列的数据操作命令组成,是数据库事务是由一系列的数据操作命令组成,是数据库应用程序的基本逻辑单元。应用程序的基本逻辑单元。应用程序的基本逻辑单元。应用程序的基本逻辑单元
2、。SQLServer2005SQLServer2005在对在对在对在对数据库进行操作时,通过事务来保证数据的一致数据库进行操作时,通过事务来保证数据的一致数据库进行操作时,通过事务来保证数据的一致数据库进行操作时,通过事务来保证数据的一致性和完整性。性和完整性。性和完整性。性和完整性。n n用户访问数据库时,经常出现并发的情况。数据用户访问数据库时,经常出现并发的情况。数据用户访问数据库时,经常出现并发的情况。数据用户访问数据库时,经常出现并发的情况。数据库系统的并发处理能力是衡量其性能的重要标志库系统的并发处理能力是衡量其性能的重要标志库系统的并发处理能力是衡量其性能的重要标志库系统的并发处
3、理能力是衡量其性能的重要标志之一。之一。之一。之一。n n数据库系统通过适当的并发控制机制协调并发操数据库系统通过适当的并发控制机制协调并发操数据库系统通过适当的并发控制机制协调并发操数据库系统通过适当的并发控制机制协调并发操作,保证数据的一致性。在作,保证数据的一致性。在作,保证数据的一致性。在作,保证数据的一致性。在SQLServer2005SQLServer2005中,中,中,中,以事务为基本操作单位,使用锁来实现并发控制。以事务为基本操作单位,使用锁来实现并发控制。以事务为基本操作单位,使用锁来实现并发控制。以事务为基本操作单位,使用锁来实现并发控制。清华大学出版社.SQL Serve
4、r 2005数据库应用与开发 第第09章章 事务和锁事务和锁9.1 事务概述9.2 管理事务9.3 管理并发数据访问9.4 管理锁9.5小结清华大学出版社.SQL Server 2005数据库应用与开发 9.1 事务概述n在计算机系统设计过程中,与一个商业事务相关在计算机系统设计过程中,与一个商业事务相关的数据必须保证可靠性、一致性和完整性,以符的数据必须保证可靠性、一致性和完整性,以符合实际的商业过程。合实际的商业过程。n在在SQLServer2005中,通常由事务来完成相关操中,通常由事务来完成相关操作,以确保多个数据的修改作为一个单元来处理。作,以确保多个数据的修改作为一个单元来处理。n
5、事务(事务(Transaction)是单个的工作单元。如果某一)是单个的工作单元。如果某一事务执行成功,则在该事务中进行的所有数据修事务执行成功,则在该事务中进行的所有数据修改均会提交,成为数据库中的永久组成部分。如改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据果事务遇到错误且必须取消或回滚,则所有数据修改均被还原。修改均被还原。清华大学出版社.SQL Server 2005数据库应用与开发 9.1 事务概述9.1.1事务的特点事务的特点定义事务必须符合如下的典型特征。定义事务必须符合如下的典型特征。n原子性(原子性(Atomicity):事务包含的一系列
6、数据操作是是):事务包含的一系列数据操作是是一个整体。执行部分操作则数据会回滚到原来的状态。一个整体。执行部分操作则数据会回滚到原来的状态。n一致性一致性(Consistency):事务执行完成后,将数据库:事务执行完成后,将数据库从一个一致状态转变到另一个一致状态,事务不能违从一个一致状态转变到另一个一致状态,事务不能违背定义在数据库中的任何完整性检查。背定义在数据库中的任何完整性检查。n隔离性隔离性(Isolation):一一个事务内部的操作及使用:一一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰事务
7、之间不能互相干扰n持久性持久性(Durability):要求一旦事务提交,那么对数:要求一旦事务提交,那么对数据库所做的修改将是持久的,无论发生何种机器和系据库所做的修改将是持久的,无论发生何种机器和系统故障,都不应该对其有任何影响。统故障,都不应该对其有任何影响。清华大学出版社.SQL Server 2005数据库应用与开发 9.1 事务概述9.1.2事务的分类事务的分类任何对数据的修改都是在事务环境中进行的。按照事务定义任何对数据的修改都是在事务环境中进行的。按照事务定义的方式可以将事务分为系统定义事务和用户定义事务。的方式可以将事务分为系统定义事务和用户定义事务。SQLServer200
8、5支持支持3种事务模式分别对应上述两类事务:种事务模式分别对应上述两类事务:自动提交事务、显式事务和隐式事务。自动提交事务、显式事务和隐式事务。(1)自动提交事务。自动提交事务。SQLServer2005将一切操作作为事务将一切操作作为事务处理,它不会在事务以外更改数据。如果没有用户定义处理,它不会在事务以外更改数据。如果没有用户定义事务,事务,SQLServer会自己定义事务,称为自动提交事务。会自己定义事务,称为自动提交事务。每条单独的语句都是一个事务。每条单独的语句都是一个事务。(2)显式事务。显式事务。显式事务是指显式定义了启动和结束的事显式事务是指显式定义了启动和结束的事务。在实际应
9、用中,大多数的事务是由用户来定义的。务。在实际应用中,大多数的事务是由用户来定义的。事务结束分为提交(事务结束分为提交(COMMIT)和回滚()和回滚(ROLLBACK)两种)两种状态。状态。清华大学出版社.SQL Server 2005数据库应用与开发 9.1 事务概述9.1.2事务的分类事务的分类(3)隐式事务。隐式事务。在隐式事务中,在隐式事务中,SQLServer在没有事务定在没有事务定义的情况下会开始一个事务,但不会像在自动提交模式义的情况下会开始一个事务,但不会像在自动提交模式中那样自动执行中那样自动执行COMMIT或或ROLLBACK语句,事务必语句,事务必须显式结束。须显式结束
10、。Transact-SQL脚本使用脚本使用SETIMPLICIT_TRANSACTIONSON/OFF语句可以启动语句可以启动/关闭隐式事务模式。关闭隐式事务模式。(4)分布式事务。分布式事务。一个比较复杂的环境,可能有多台服务一个比较复杂的环境,可能有多台服务器,那么要保证在多服务器环境中事务的完整性和一致器,那么要保证在多服务器环境中事务的完整性和一致性,就必须定义一个分布式事务。在分布式事务中,所性,就必须定义一个分布式事务。在分布式事务中,所有的操作都可以涉及对多个服务器的操作,当这些操作有的操作都可以涉及对多个服务器的操作,当这些操作都成功时,那么所有这些操作都提交到相应服务器的数都
11、成功时,那么所有这些操作都提交到相应服务器的数据库中,如果这些操作中有一条操作失败,那么这个分据库中,如果这些操作中有一条操作失败,那么这个分布式事务中的全部操作都被取消。布式事务中的全部操作都被取消。清华大学出版社.SQL Server 2005数据库应用与开发 9.1 事务概述9.1.2事务的分类事务的分类n跨越两个或多个数据库的单个数据库引擎跨越两个或多个数据库的单个数据库引擎实例中实例中的事务实际上也是分布式事务。该实例对分布式的事务实际上也是分布式事务。该实例对分布式事务进行内部管理;对于用户而言,其操作就像事务进行内部管理;对于用户而言,其操作就像本地事务一样。本地事务一样。n对于
12、应用程序而言,分布式提交必须由事务管理对于应用程序而言,分布式提交必须由事务管理器管理,以尽量避免出现因网络故障而导致事务器管理,以尽量避免出现因网络故障而导致事务由某些资源管理器成功提交,另一些资源管理器由某些资源管理器成功提交,另一些资源管理器回滚的情况。通过准备阶段和提交阶段管理提交回滚的情况。通过准备阶段和提交阶段管理提交进程可避免这种情况,这称为两阶段提交。进程可避免这种情况,这称为两阶段提交。清华大学出版社.SQL Server 2005数据库应用与开发 9.2 管理事务事务的基本操作包括事务的基本操作包括启动、保存、提交或回滚启动、保存、提交或回滚等。等。9.2.1启动事务启动事
13、务1显式事务的定义显式事务的定义显式事务需要明确定义事务的启动。显式事务的定义显式事务需要明确定义事务的启动。显式事务的定义格式如下:格式如下:BEGINTRAN|TRANSACTIONtransaction_name|tran_name_variableWITHMARKdescription例例9.1定义一个事务,将定义一个事务,将teaching数据库的数据库的score表中表中所有选了所有选了c05109号课程的学生的分数加号课程的学生的分数加5分,并提交该分,并提交该事务。事务。程序代码如下:程序代码如下:USEteachingGODECLARETranNameVARCHAR(20);
14、SELECTTranName=Add_Score;BEGINTRANTranName;UPDATEscoreSETfinal=final+5WHEREcourseno=c05109;COMMITTRANTranName;GO例例9.2定义一个事务,将定义一个事务,将teaching数据库的数据库的score表中所有选了表中所有选了c05109号课程的学生的分数减号课程的学生的分数减5分,分,并提交该事务。并提交该事务。程序代码如下:程序代码如下:USEteachingGOBEGINTRANSubtract_ScoreWITHMARKNSubtractscoreofc05109;GOUPDATE
15、scoreSETfinal=final-5WHEREcourseno=c05109;COMMITTRANSubtract_Score;GO清华大学出版社.SQL Server 2005数据库应用与开发 9.2 管理事务9.2.1启动事务启动事务2隐式事务的定义隐式事务的定义默认情况下,隐式事务是关闭的。使用隐式事务需先默认情况下,隐式事务是关闭的。使用隐式事务需先将事务模式设置为隐式事务模式。不再使用隐式事将事务模式设置为隐式事务模式。不再使用隐式事务时,要退出该模式。务时,要退出该模式。SETIMPLICIT_TRANSACTIONSON|OFF需要注意的是:需要注意的是:在使用隐式事务时,
16、不要忘记结束事在使用隐式事务时,不要忘记结束事务(提交或回滚)。由于不需要显式的定义事务的务(提交或回滚)。由于不需要显式的定义事务的开始,事务的结束很容易被忘记,导致失误长期运开始,事务的结束很容易被忘记,导致失误长期运行;在连接关闭时产生不必要的回滚;或者造成其行;在连接关闭时产生不必要的回滚;或者造成其他连接的阻塞问题。他连接的阻塞问题。清华大学出版社.SQL Server 2005数据库应用与开发 9.2 管理事务9.2.1启动事务启动事务2隐式事务的定义隐式事务的定义例例9.3分别使用显式事务和隐式事务向表分别使用显式事务和隐式事务向表course中插入两条记中插入两条记录。录。程序
17、代码如下:程序代码如下:-first partUSE teachingGOSET NOCOUNT ON;SET IMPLICIT_TRANSACTIONS OFF;GOPRINT NTran count at start=+CAST(TRANCOUNT AS NVARCHAR(10);BEGINTRANSACTIONINSERTINTOcourseVALUES(c05141,WIN程序设计程序设计,选修选修,64,4.0);PRINTNTrancountat1st=+CAST(TRANCOUNTASNVARCHAR(10);INSERTINTOcourseVALUES(c05142,WEB程序
18、设计程序设计,选修选修,64,4.0);PRINTNTrancountat2nd=+CAST(TRANCOUNTASNVARCHAR(10);COMMITTRANSACTIONGO-secondpartPRINTNSettingIMPLICIT_TRANSACTIONSON.;SETIMPLICIT_TRANSACTIONSON;PRINTNUseimplicittransactions.;-No BEGIN TRAN needed here.INSERT INTO course VALUES(c05151,管理信息系统,选修,48,3.0);PRINT NTran count in 1st
19、implicit transaction=+CAST(TRANCOUNT AS NVARCHAR(10);INSERT INTO course VALUES(c05152,电子商务,选修,48,3.0);PRINT NTran count in 2nd implicit transaction=+CAST(TRANCOUNT AS NVARCHAR(10);GOCOMMIT TRANSACTION;PRINT NTran count after implicit transaction=+CAST(TRANCOUNT AS NVARCHAR(10);SET IMPLICIT_TRANSACTI
20、ONS OFF;GO清华大学出版社.SQL Server 2005数据库应用与开发 9.2 管理事务9.2.2保存事务保存事务为了提高事务执行的效率,或者进行程序的调试等,为了提高事务执行的效率,或者进行程序的调试等,可以在事务的某一点处设置一个标记(保存点),可以在事务的某一点处设置一个标记(保存点),这样当使用回滚语句时,可以不用回滚到事务的起这样当使用回滚语句时,可以不用回滚到事务的起始位置,而是回滚到标记所在的位置即保存点。始位置,而是回滚到标记所在的位置即保存点。保存点设置及使用格式:保存点设置及使用格式:SAVETRAN|TRANSACTIONsavepoint_name|save
21、point_variableROLLBACKTRANSACTIONsavepoint_name|savepoint_variable例例9.4定义一个事务,向定义一个事务,向course表中添加一条记录,表中添加一条记录,并设置保存点。然后再删除该记录,并回滚到事务的并设置保存点。然后再删除该记录,并回滚到事务的保存点,提交事务。保存点,提交事务。程序代码如下:程序代码如下:USEteachingGOBEGINTRANINSERTINTOcourseVALUES(c05139,统一建模语言统一建模语言UML,选修选修,48,3.0);SAVETRANsavepoint;DELETEFROMco
22、urseWHEREcourseno=c05139;ROLLBACKTRANsavepoint;COMMITTRANGO清华大学出版社.SQL Server 2005数据库应用与开发 9.2 管理事务9.2.3提交事务提交事务提交事务标志着一个执行成功的隐式事务或提交事务标志着一个执行成功的隐式事务或显式事务的结束。事务提交后,自事务开显式事务的结束。事务提交后,自事务开始以来所执行的所有数据修改被持久化,始以来所执行的所有数据修改被持久化,事务占用的资源被释放。事务占用的资源被释放。COMMITTRAN|TRANSACTIONtransaction_name|tran_name_variabl
23、e清华大学出版社.SQL Server 2005数据库应用与开发 9.2 管理事务9.2.4回滚事务回滚事务回滚事务是指清除自事务的起点或到某个保回滚事务是指清除自事务的起点或到某个保存点所做的所有数据修改。释放由事务控存点所做的所有数据修改。释放由事务控制的资源。制的资源。ROLLBACKTRAN|TRANSACTIONtransaction_name|tran_name_variable|savepoint_name|savepoint_variable清华大学出版社.SQL Server 2005数据库应用与开发 9.2 管理事务9.2.5自动提交事务自动提交事务nSQLServer20
24、05在启动显式事务,或者隐性事务在启动显式事务,或者隐性事务模式设置为打开之前,都将以自动提交模式进行模式设置为打开之前,都将以自动提交模式进行操作。即:在未启动显式事务,或者回滚和关闭操作。即:在未启动显式事务,或者回滚和关闭启动显式事务时,启动显式事务时,SQLServer为自动提交模式。为自动提交模式。在关闭隐性事务模式设置时,在关闭隐性事务模式设置时,SQLServer为自动为自动提交模式。提交模式。n在自动提交模式下,发生回滚的操作内容取决于在自动提交模式下,发生回滚的操作内容取决于遇到的错误的类型。当遇到运行时错误时,仅回遇到的错误的类型。当遇到运行时错误时,仅回滚发生错误的语句;
25、当遇到的错误时编译错误时,滚发生错误的语句;当遇到的错误时编译错误时,回滚所有的语句。回滚所有的语句。例例9.5比较自动提交事务发生运行时错误和编译时错比较自动提交事务发生运行时错误和编译时错误的处理情况。误的处理情况。程序代码如下:程序代码如下:-发生编译错误的事务示例:发生编译错误的事务示例:USEteachingGOINSERTINTOcourseVALUES(c11111,测试课程测试课程,必修必修,48,3.0);INSERTINTOcourseVALUES(c22222,测试课程测试课程,必修必修,48,3.0);-语法错误语法错误INSERTINTOcourseVALUSE(c3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第09章 事务和锁 09 事务

限制150内