欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    【教学课件】第13章事务和锁定.ppt

    • 资源ID:5657842       资源大小:275.50KB        全文页数:18页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【教学课件】第13章事务和锁定.ppt

    第13章 事务和锁定,讲师姓名,第13章 事务和锁定,事务概述,1,事务还原,2,事务锁定,3,13.1 事务概述,事务是用于将多个语句合并为一个整体并使这个整体具有不可分割,同进同退的特性。在一个事务内部的语句,要么一个都不做,要么全部做完,这保证了数据在逻辑上的一致性,使得许多现实中的交易得以顺利进行。,13.1.1 ACID属性,事务是属于某个逻辑单元的一系列操作,这一系列操作具有四个属性,即ACID属性,分别为原子性(Atomicity 也即不可分割性),一致性(Consistency),隔离性(Isolation),和耐久性(Durability)。,13.1.1 ACID属性,1.原子性原子性保证了事务的完整性。如前所述,事务是由一系列操作组成的,这些操作要么全部都做完,要么一个也不做。也就是说,只有当其中所有的操作都成功执行后这个事务才算是成功执行,若有一个操作执行失败,则将使得其它所有成功的操作都被取消。这就是事务的原子性。事务的原子性是非常具有其应用价值的,最典型和最普遍的莫过于银行交易,只有当用户所有操作做完确认后整个交易才算完成,否则将取消这笔交易。若不采用事务,则有可能出现这样的情况:用户在ATM上取钱,交易刚将用户账户上的那部分额度减去正准备出款,此时突然停电,系统停止。当重新启动系统时用户会发现尽管自已账户上的金额减少了,但却并没有拿到这部分钱。而如果采用了事务,则可以将“出款”和“减额”这两个操作放在同一个事务中,用户若没取到钱绝不会出现账户上金额减少的问题。,13.1.1 ACID属性,2.一致性一致性的意思是指无论在交易开始还是交易结束,所有数据都是处于同一状态。交易成功则所有数据处于交易结束状态,交易失败则所有数据处于效易开始状态,而不会出现一个数据处于交易开始的状态而另一个数据却处于交易结束状态。3.隔离性隔离性是指一个事务与其它同时发生的事务是不相互影响的。也就是说当一个事务发生时,看起来好像是只有它一个事务在运行一样。在事务A要用到事务B可能要操作的数据时,事务A只会使用在事务B发生之前或发生之后的数据,而不会使用处于事务B发生后还没有完成时期的数据。,13.1.1 ACID属性,持久性是指事务一但认可,对系统就形成了一个永久的结果,就算系统出现故障了这种结果也不会丢失。在SQL Server中进行事务处理时,将会利用事务日志的机制,系统首在事务开始时做一个标志,只有当事务确认了以后才认为交易结束,这样就可以确保在系统故障时的交易有效性。,13.1.2 事务的几种模式,模式1:自动提交模式自动提交是SQL中默认的事务提交模式。它是将每一条语句作为一个事务,当每个语句完成后提交事务。比如,在默认环境下,下面的语句自成一个事务。在修改数据后,由这条语句形成的事务自动提交。自动认可模式是很有用的模式,用户不必关心明确的开始或结束。自动提交模式将默认执行,直到遇到显式的事务开始语句或设定了隐式模式后遇到隐式启动事务的语句为止。,13.1.2 事务的几种模式,显式是指采用专门的语句开始启动事务的模式。显式常用于应用程序存储过程或触发器这些序列化的指令中。显式事务用以下语句进行指定和控制:BEGIN TRANSACTION表示事务的开始,同时也表示显式事务开始。COMMIT TRANSACTION 或 COMMIT WORK显示事务的结束,如果在事务开始后没有出现错误,可以用该语句结束事务,并提交,这样,该次事务中的所有数据修改在数据库中都将永久有效。事务占用的资源也将被释放。ROLLBACK TRANSACTION 或 ROLLBACK WORK当显示事务开始后遇到错误,则可以用该语句来处理遇到错误的事务。该事务修改的所有数据都返回到事务开始时的状态。事务占用的资源将被释放。开始一个事务的语法如下:,13.1.2 事务的几种模式,模式3:隐式隐式是指在这种模式下,一些语句它即不是自动提交模式那样每条语句作为一个事务提交一次,也不是显性地指定BEGIN TRANSACTION来开始事务。它是一些特定的语句,这些语句一旦使用,则事务开始,直到显示地结束或用户断线为止。启动隐式事务模式的语法为:SET IMPLICIT_TRANSACTIONS ON|OFF 设置为 ON 时,SET IMPLICIT_TRANSACTIONS 将启动隐性事务模式。设置为 OFF 时,则返回到自动提交事务模式。下面为使用隐式事务的例子:,13.1.3 事务的相关信息,1.TRANCOUNTTRANCOUNT代表了当前连接的活动事务数量。当开始一个事务时,它自动加1,回滚整个事务将使此值减1,但如果回滚至保存点则此值不变。2事务中不允许的语句在一个事务中不允许有下面的语句存在,不论是显式事务还是隐式事务。RESTORE LOGDUMP TRANSACTIONUPDATE STATISTICSDROP DATABASERESTORE DATABASEDISK INITRECONFIGUREALTER DATABASELOAD DATABASEBACKUP LOGLOAD TRANSACTION CREATE DATABASE,13.2 事务还原,SQL Server的事务恢复有两种方式,一是系统自动还原,另一种是利用T-SQL语句还原。下面分别介绍这两种恢复方法。1.系统自动恢复系统自动还原发生在两种时间(1).系统执行T-SQL语句出错时。此时系统将会自动还原出错的那条语句。如果设置 XACT_ABORT为ON的话,则在一条语句出错后将放弃所有正在执行和将执行的语句,回滚事务。如为OFF,则自动还原出错的语句而不中断正在进行的事务。(2).在SQL Server服务器重新启动时,也将会自动回复。在启动时系统将会自动检查数据库的完整性,恢复提交的交易并且回滚未提交的交易系统错误信息以恢复系统。,13.2 事务还原,2.程序恢复程序恢复是通过ROLLBACK来进行的。在一个T-SQL程序中,一些可预见或不可预见的情况常被写为分支,如果出现可预见的但不希望发生的情况或不可预见的情况,则需要让事务回滚,以回到事务的初始状态。这时需要用到ROLLBACK语句,当程序执行到ROLLBACK语句时,将放弃后续语句的执行。回滚的语法如下:ROLLBACK TRAN SACTION transaction_name|tran_name_variable|savepoint_name|savepoint_variable 其中transaction_name由事务开始时,BEGIN TRANSACTION所指定的事务名字。在嵌套的事务中,这个名字必须跟最远那个BEGIN TRANSACTION的名字相同,其长度必须小于32个字符。如果是用后面的变量tran_name_variable,则需用char,varchar,nchar,nvchar来定义。如果ROLLBACK TRANSACTION后面跟事务名字,则将回滚至由这个名字指定的事务起始点。可以省略。savepoint_name由SAVE TRANSACTION指定的保存点名称。如果ROLLBACKTRANSACTION后面跟保存点,则将回滚至保存点处。可以省略。,13.3 事务锁定,并发事务常常遇到对相同资源的访问。比如同时有两个事务对数据库Northwind中的Employees资料表的读取或修改。可以预见,如果不对这些并发事务的访问加以控制,将可能带来大量的错误。比如,有两个事务,其中一个对数据库Northwind中的表Employees读取其Phone列,以得到最新的电话,而另一个事务也在对数据库Northwind中的表Employees修改Phone列,由第6章可知,修改操作是先删除再插入的操作,假设更新数据的事务刚删除列,正插入到一半,也即刚刚写入一半数据时(如本来电话号码是054-422984332,却只写到054-422时)读取事务将这个数据读去,则显然读到的数据是错误数据。又如,一个更新的数据的事务正准备对数据库Northwind中的表Shippers的CompanyName列进行更改,刚找到了这个数据项所在的叶子结点(物理位置),这时一个删除数据库Northwind中的表Shippers的事务由于得到处理机开始执行,在删除事务完成后更新数据的事务继续执行,更改数据,但此时所处的表已经不存在,更改数据的地址已经无效,如果更改的区域还没有被系统分配给其它表使用,则改在空白区域虽然无效但还不至于造成危害,但如果这个区域已被系统分配给其它表使用,则将造成其它表的数据失效。,13.3 事务锁定,共享锁(Shared)共享锁用于多个事务的读取,比如用SELECT读取Northwind数据库中表Customers的一行时,就先在这一行上加上共享锁后才能读取,如果没加上锁就不能读取。加上了共享锁就使得其它要更改数据的锁无法加上,其它对数据有写入的事务就无法使用这一行,保证了读取的有效性。同时,另一个也是读取这一行的事务可以却给这一行加上共享锁以读取数据,这是因为并行事务中如果有一个写数据,将破坏数据的有效性,而并行读则不影响数据的有效性。这样就使得所有持有对某个对象共享锁的事务得以与其它同样持有对这个对象共享锁的事务可以同时上锁,然后同时访问数据。排它锁(Exclusive)排它锁顾名思义是指对一个资源一旦上锁,则其它锁不可以再锁定该资源。排它锁常用于对资源有更改的事务。这样可以防止破坏数据的有效性。,13.3 事务锁定,更新锁(Update)更新锁是指先读取数据再写入数据的事务使用的锁。先读取数据再写入数据这种操作本来应当先采用共享锁以读取数据,再采用排它锁以更改数据,但这常常容易造成死锁。考虑下面这种情况:有两个事务A和B都是对数据库的一行采取先读取再更改的操作,两个进程在最开始时由于是读操作,采用共享锁锁定。而后转为写,假定它们同时转为写操作,则事务A在由共享锁转到排它锁这段时间里,发现事务A已经用共享锁锁定了资源,于是暂时放弃将共享锁转变为排它锁,继续等待,而此时事务B也跟A在做同样的转变工作,试图将共享锁转变为排它锁,最后的结果是,两个事务一直想将共享锁转变为排它锁,却但一直都因为对方的共享锁已经锁定资源而无法进行,这就造成了死锁。解决的办法是采用更新锁。更新锁在共享锁阶断就只允许有一个事务对资源进行访问,所以当这个事务在由共享锁转变为更新锁时不可能存在上述的还有另一个事务用共享锁锁定资源的情况,从而避免了死锁。,13.3 事务锁定,意向锁(Intent)意向锁表示将要在某个资源上放置某种锁,以用于建立锁定层次。意向锁分为三类:意向共享锁、意向排它锁、意向排它共享锁。意向锁有下面几种类型:(1).意向共享锁(2).意向排它锁(3).与意向排它共享锁构架锁(Schema)用于对表的结构操作时,采用构架锁。使用这种锁有两种场合,一是在执行资料定义语言(DDL)时,另一种是在锁定用于编译查询时。大容量更新锁(Bulk Update)大容量更新锁是指在大容量复制,且指定了 TABLOCK 提示或者使用 sp_tableoption 设置了 table lock on bulk 表选项时使用的锁。这种锁可以使得在大容量复制时其它操作不对正在复制的数据进行操作。,Thank You,

    注意事项

    本文(【教学课件】第13章事务和锁定.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开