11_事务和锁.ppt
《11_事务和锁.ppt》由会员分享,可在线阅读,更多相关《11_事务和锁.ppt(137页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、幻灯片幻灯片1(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据事务事务(transaction):保证数据完整保证数据完整性性将一组语句作为一个单元执行将一组语句作为一个单元执行必须拥有称为必须拥有称为ACID的四个属性的四个属性原子性原子性(Atomicity):):事务必须是原子工作单元;事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执对于其数据修改,要么全都执行,要么全都不执行。行。一致性一致性(Consistency):事务在完成时,必须使:事务在完成时,必须使所有的数据都保持一致状态。所有的数据都保持一
2、致状态。隔离性隔离性(Isolation):一个事务的执行不会被另一:一个事务的执行不会被另一个事务干扰个事务干扰持久性持久性(Durability):事务完成之后,它对于系:事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障统的影响是永久性的。该修改即使出现系统故障也将一直保持。也将一直保持。创建事务创建事务幻灯片幻灯片2(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据8.1事务的基本概念一个说明ACID特性的例子事务:从帐户A转$50到帐户B:1.read(A)2.A:=A 503.write(A)4.read(
3、B)5.B:=B+506.write(B)Consistency事务执行完毕后事务执行完毕后A 和和B 帐户金额帐户金额之和必须保持不变。之和必须保持不变。幻灯片幻灯片3(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据8.1事务的基本概念Atomicity事务在事务在步骤步骤3,step6之间失败之间失败,系统必须系统必须确保此更新没有在系统中没有遗留痕迹,否则将导致确保此更新没有在系统中没有遗留痕迹,否则将导致不一致。不一致。Durability一旦用户被告知事务已经完成一旦用户被告知事务已经完成(即转帐成即转帐成功功),则该事
4、务对数据库所做的更新操作必须是永久性则该事务对数据库所做的更新操作必须是永久性的,的,即使出现某些失败的情形即使出现某些失败的情形.Isolation若在若在步骤步骤3,step6,有另外一个事务允许有另外一个事务允许存取被部分更新的数据库存取被部分更新的数据库,则它将看到一个不一致的则它将看到一个不一致的数据库。数据库。(即即A+B的和小于它应该有的值的和小于它应该有的值).通过串行地执行事务,可以确保隔离性,但是事务的通过串行地执行事务,可以确保隔离性,但是事务的并发执行可以带来更多的好处并发执行可以带来更多的好处.幻灯片幻灯片4(共(共24张)张)第第14章章Ver.1.0使用使用SQL
5、 Server 2005查询和管理数据查询和管理数据8.1事务的基本概念事务的一致性必须建立在用户程序逻辑正事务的一致性必须建立在用户程序逻辑正确性的基础之上。即:当用户提交事务的确性的基础之上。即:当用户提交事务的时候,必须保证当它运行完毕之际,将数时候,必须保证当它运行完毕之际,将数据库保持在一个一致性的状态。据库保持在一个一致性的状态。DBMS通过恢复机制来确保事务的原子性通过恢复机制来确保事务的原子性和永久性。和永久性。隔离性是通过提供一套并发控制的机制而隔离性是通过提供一套并发控制的机制而得以实现。得以实现。幻灯片幻灯片5(共(共24张)张)第第14章章Ver.1.0使用使用SQL
6、Server 2005查询和管理数据查询和管理数据8.1事务的基本概念3、事务的状态、事务的状态执行事务执行事务事务无法继事务无法继续正常执行续正常执行事务回滚,数据库恢事务回滚,数据库恢复到事务开始前状态复到事务开始前状态最后一条语最后一条语句被执行后句被执行后成功完成,永成功完成,永久写入数据库久写入数据库活动活动状态状态失败失败状态状态中止中止状态状态提交提交状态状态部分提交部分提交状态状态事务定义语句与状态的关系事务定义语句与状态的关系 ROLLBACKROLLBACKCOMMITCOMMITBEGIN BEGIN TRANSACTIONTRANSACTION幻灯片幻灯片6(共(共24
7、张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据如果在这个阶段发生如果在这个阶段发生故障,故障,A4000,B10000幻灯片幻灯片7(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据数据库引擎数据库引擎提供:提供:锁锁定设备,使事务保持定设备,使事务保持隔离隔离。记录设备,保证事务的记录设备,保证事务的持久性持久性。即使服。即使服务器硬件、操作系统或数据库引擎务器硬件、操作系统或数据库引擎实例实例自身出现故障,该实例也可以在重新启自身出现故障,该实例也可以在重新启动时使用动时使用
8、事务日志事务日志,将所有未完成的事,将所有未完成的事务自动地回滚到系统出现故障的点。务自动地回滚到系统出现故障的点。事务管理事务管理特性,强制保持事务的特性,强制保持事务的原子性原子性和一致性和一致性。事务启动之后,就必须成功。事务启动之后,就必须成功完成,否则数据库引擎完成,否则数据库引擎实例将撤消该事实例将撤消该事务启动之后对数据所做的所有修改。务启动之后对数据所做的所有修改。幻灯片幻灯片8(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据有以下类型:有以下类型:自动提交事务自动提交事务(Autocommit trsnsacti
9、on)显式事务显式事务(Explicit transactions)自动提交事务:自动提交事务:自动提交事务是自动提交事务是SQL Server的默认事务管的默认事务管理模式理模式显式事务:显式事务:显显式事式事务务使用使用BEGIN TRANSACTION 和和 COMMIT TRANSACTION语语句指定句指定让我们看看如何让我们看看如何创建事务创建事务幻灯片幻灯片9(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据隐式和显示模式之间切换隐式和显示模式之间切换:SETIMPLICIT_TRANSACTIONSON|OFF在隐式
10、模式中,下面的语句触发一个事务:在隐式模式中,下面的语句触发一个事务:ALTERTABLE,INSERT,OPEN,CREATE,DELETE,REVOKE,DROP,SELECT,FETCH,TRUNCATETABLE,GRANT,UPDATE。TRANCOUNT:返回当前连接的活动事务数。BEGINTRANSACTION语句将TRANCOUNT加1ROLLBACKTRANSACTION将TRANCOUNT递减到0COMMITTRANSACTION将TRANCOUNT递减1。trancount例句创建事务创建事务幻灯片幻灯片10(共(共24张)张)第第14章章Ver.1.0使用使用SQL S
11、erver 2005查询和管理数据查询和管理数据BEGINTRANSACTION标记一个显式本地事务的起始点。标记一个显式本地事务的起始点。BEGINTRANSACTION使使TRANCOUNT按按1递增。递增。如果遇上错误,在如果遇上错误,在BEGINTRANSACTION之后的所有数之后的所有数据改动都能进行回滚,以将数据返回到已知的一致状态。每据改动都能进行回滚,以将数据返回到已知的一致状态。每个事务继续执行直到它无误地完成并且用个事务继续执行直到它无误地完成并且用COMMITTRANSACTION对数据库作永久的改动,或者遇上错误并对数据库作永久的改动,或者遇上错误并且用且用ROLLB
12、ACKTRANSACTION语句擦除所有改动。语句擦除所有改动。BEGINTRANSACTION为发出本语句的连接启动一个本地为发出本语句的连接启动一个本地事务。根据当前事务隔离级别的设置,为支持该连接所发出事务。根据当前事务隔离级别的设置,为支持该连接所发出的的Transact-SQL语句而获取的许多资源被该事务锁定,直语句而获取的许多资源被该事务锁定,直到使用到使用COMMITTRANSACTION或或ROLLBACKTRANSACTION语句完成该事务为止。语句完成该事务为止。幻灯片幻灯片11(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数
13、据查询和管理数据Committransaction:标志一个成功的隐性事务或显式事务的结束。标志一个成功的隐性事务或显式事务的结束。如果如果TRANCOUNT为为1,COMMITTRANSACTION使得自从事务开始以来所执行的使得自从事务开始以来所执行的所有数据修改成为数据库的永久部分所有数据修改成为数据库的永久部分,释放事务,释放事务所占用的资源,并将所占用的资源,并将TRANCOUNT减少到减少到0。如果如果TRANCOUNT大于大于1,则,则COMMITTRANSACTION使使TRANCOUNT按按1递减递减并且事务将保持活动状态并且事务将保持活动状态不能在发出一个不能在发出一个CO
14、MMITTRANSACTION语句语句之后回滚事务,因为数据修改已经成为数据库的之后回滚事务,因为数据修改已经成为数据库的一个永久部分。一个永久部分。幻灯片幻灯片12(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据ROLLBACKTRANSACTION将显式事务或隐性事务回滚到事务的起点或事务内的将显式事务或隐性事务回滚到事务的起点或事务内的某个保存点。某个保存点。ROLLBACKTRANSACTION清除自事务的起点或清除自事务的起点或到某个保存点所做的所有数据修改。它还释放由事务到某个保存点所做的所有数据修改。它还释放由事务控
15、制的资源。控制的资源。ROLLBACKTRANSACTION都将都将TRANCOUNT系统函数减小为系统函数减小为0在执行在执行COMMITTRANSACTION语句后不能回滚语句后不能回滚事务。事务。幻灯片幻灯片13(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据事务事务事务日志事务日志每个每个SQLServer2005数据库都具有事务日志,用于数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。记录所有事务以及每个事务对数据库所做的修改。事务日志是数据库的一个重要组件,如果系统出现事务日志是数据库的一个重要组
16、件,如果系统出现故障,它将成为最新数据的唯一源。故障,它将成为最新数据的唯一源。SAVETRANSACTION可被用于保存事务到某可被用于保存事务到某个点。个点。回滚事务到保存点回滚事务到保存点分布式事务分布式事务分布事务在多于一个数据库服务器上被处理分布事务在多于一个数据库服务器上被处理幻灯片幻灯片14(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据课间思考课间思考下面哪个属性不是事务拥有的下面哪个属性不是事务拥有的?1.原子性原子性2.一致性一致性3.隔离性隔离性4.分离性分离性答案:4.分离性幻灯片幻灯片15(共(共24张)
17、张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据事务被回滚:事务被回滚:当事务的执行处于无效状态时当事务的执行处于无效状态时为了维护一致性为了维护一致性使用使用ROLLBACK TRANSACTION 和和ROLLBACK WORK语句回语句回滚事务滚事务 语法:语法:ROLLBACK TRANSACTION transaction_name|tran_name_variable|savepoint_name|savepoint_variable让我们看看如何让我们看看如何回滚事务回滚事务幻灯片幻灯片16(共(共24张)张)第第14章章Ver.1
18、.0使用使用SQL Server 2005查询和管理数据查询和管理数据事务处理过程中的错误事务处理过程中的错误如果某个错误使事务无法成功完成,如果某个错误使事务无法成功完成,SQLServer会自动回滚该事务,并释放该事务会自动回滚该事务,并释放该事务占用的所有资源。占用的所有资源。如果客户端与数据库引擎如果客户端与数据库引擎实例的网络连接中断实例的网络连接中断了,那么当网络向实例通知该中断后,该连接了,那么当网络向实例通知该中断后,该连接的所有未完成事务均会被回滚。的所有未完成事务均会被回滚。如果客户端应用程序失败或客户机崩溃或重新如果客户端应用程序失败或客户机崩溃或重新启动,也会中断连接,
19、而且当网络向数据库引启动,也会中断连接,而且当网络向数据库引擎擎实例通知该中断后,该实例会回滚所有未完实例通知该中断后,该实例会回滚所有未完成的连接。成的连接。如果客户端从该应用程序注销,所有未完成的如果客户端从该应用程序注销,所有未完成的事务也会被回滚。事务也会被回滚。幻灯片幻灯片17(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据事务处理过程中的错误事务处理过程中的错误如果批中出现运行时语句错误(如违反约束)如果批中出现运行时语句错误(如违反约束),那么数据库引擎,那么数据库引擎中的默认行为是只回滚中的默认行为是只回滚产生该错
20、误的语句。产生该错误的语句。如果出现运行时错误或编译错误,那么程序如果出现运行时错误或编译错误,那么程序员应该编写应用程序代码来指定正确的操作员应该编写应用程序代码来指定正确的操作(COMMIT或或ROLLBACK)。一种处理)。一种处理错误(包括那些事务中的错误)的有效工具错误(包括那些事务中的错误)的有效工具是是Transact-SQLTRY.CATCH构造。构造。幻灯片幻灯片18(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据8.5事务并发控制并发操作并发操作在多用户共享系统中,多个用户同时存取同在多用户共享系统中,多个用户
21、同时存取同一数据的情形称为并发操作。一数据的情形称为并发操作。并发操作的优点并发操作的优点:增加了处理器和磁盘的可用性增加了处理器和磁盘的可用性,加大事务吞吐量加大事务吞吐量(throughput):一个事务使用一个事务使用CPU时,另外一个事务时,另外一个事务读写磁盘读写磁盘降低平均事务响应时间:降低平均事务响应时间:短事务不需要等待长事务短事务不需要等待长事务并发操作可能带来的问题:并发操作可能带来的问题:(1)破坏数据库的一致性)破坏数据库的一致性(2)破坏事务的隔离性)破坏事务的隔离性幻灯片幻灯片19(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查
22、询和管理数据查询和管理数据8.5.1 三类数据不一致性n并发操作带来的三类数据不一致性:并发操作带来的三类数据不一致性:1.更新丢失更新丢失 T1、T2读入同一数据并修改,读入同一数据并修改,T2提交的结提交的结果破坏了果破坏了T1提交的结果。提交的结果。A=16甲事务甲事务读出读出A=16乙事务乙事务 读出读出A=16A1写回写回A1 写回写回A=15幻灯片幻灯片20(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据8.5.1 三类数据不一致性2不可重读不可重读T1读数据后,读数据后,T2执行更执行更新操作,使新操作,使T1无法再
23、现无法再现前一次读取结果。前一次读取结果。B=100甲事务甲事务读出读出B=100乙事务乙事务 删除删除B 读不出读不出BB=100n不可重读包括三种情况:不可重读包括三种情况:(1)某事务两次读同一数据时,某事务两次读同一数据时,得到的值不同。得到的值不同。(2)某事务再次按相同条件读某事务再次按相同条件读取数据时,发现记录丢失。取数据时,发现记录丢失。(3)某事务再次按相同条件读取某事务再次按相同条件读取数据时,发现多了记录。数据时,发现多了记录。幻灯片幻灯片21(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据8.5.1 三类
24、数据不一致性3脏读脏读T1修改数据并写回磁修改数据并写回磁盘,盘,T2读取同一数据读取同一数据后,后,T1被撤销即数据被撤销即数据恢复原值,恢复原值,T2读的数读的数据与据与DB中的不一致,中的不一致,称称“脏脏”数据。数据。并发控制方法:并发控制方法:封锁封锁C=100甲事务甲事务读出读出C C*2写回写回乙事务乙事务 读出读出 C=200撤销撤销C=200C=100“脏脏”数据数据幻灯片幻灯片22(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据幻灯片幻灯片23(共(共24张)张)第第14章章Ver.1.0使用使用SQL Ser
25、ver 2005查询和管理数据查询和管理数据产生这些数据的不致性的主要原因是并发操作破坏了事务的隔离性破坏了事务的隔离性“写写写冲突写冲突”n“读读写冲突写冲突”n“读读写冲突写冲突”幻灯片幻灯片31(共(共24张)张)第第14章章Ver.1.0使用使用SQL Server 2005查询和管理数据查询和管理数据并发操作之所以产生错误,是因为任务执行期间并发操作之所以产生错误,是因为任务执行期间相互干扰造成的。当将任务定义成事务,事务具相互干扰造成的。当将任务定义成事务,事务具有的特性(特别是有的特性(特别是隔离性隔离性)得以保证时,就会避)得以保证时,就会避免上述错误的发生。免上述错误的发生。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11 事务
限制150内