数据库事务管理-PPT课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库事务管理-PPT课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 事务管理 PPT 课件
- 资源描述:
-
1、1事务管理事务管理2事务管理 l问题的引入问题的引入 l 事务事务l 并发控制并发控制 l数据库恢复数据库恢复3问题的引入l多用户同时操作数据库多用户同时操作数据库l系统在执行用户的请求时出现故障系统在执行用户的请求时出现故障例如:帐户例如:帐户A转帐给帐户转帐给帐户B10000元。元。UPDATE YHZH SET 余额余额=余额余额-10000 WHERE 帐号帐号= AUPDATE YHZH SET 余额余额=余额余额+10000 WHERE 帐号帐号= B4 事务的基本概念事务的基本概念l事务(事务(Transaction)l用户定义的一个对数据库读写用户定义的一个对数据库读写操作序列
2、操作序列l一个一个不可分割不可分割的工作单位的工作单位l在关系数据库中,事务可以是一条、一组在关系数据库中,事务可以是一条、一组SQL语语句,或整个程序。句,或整个程序。l事务和程序的区别?事务和程序的区别?l程序包含多个事务程序包含多个事务5 事务的性质事务的性质l原子性原子性(Atomicity)l事务中的操作要么都做,要么都不做 ( (All or None)All or None)l一致性一致性(Consistency)l事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态l与原子性密切相关l隔离性隔离性(Isolation)l并发执行的各事务不能相互干扰l持续性持续性/永久
3、性永久性(Durability)l事务一旦提交,它对数据库的更新不再受后继操作或故障的影响 DBMS中事务处理必须保证其中事务处理必须保证其ACID特性,这样才能保证数据库中数特性,这样才能保证数据库中数据的安全和正确。据的安全和正确。6银行转帐:从帐号银行转帐:从帐号A中取出一万元,存入帐号中取出一万元,存入帐号B。l定义一个事务,该事务包括两个操作定义一个事务,该事务包括两个操作l这两个操作要么全做,要么全不做这两个操作要么全做,要么全不做l全做或者全不做,数据库都处于一致性状态。全做或者全不做,数据库都处于一致性状态。l如果只做一个操作,数据库就处于不一致性状态如果只做一个操作,数据库就
4、处于不一致性状态。 B=B+1 A=A-1BA 事务的性质事务的性质7T1的修改被的修改被T2覆盖了!覆盖了! 读读A=16 AA-3写回写回A=13 读读A=16 AA-1 写回写回A=15 T2T1 事务的性质事务的性质8 事务的基本概念事务的基本概念l事务的开始和结束可以由用户显式控制。事务的开始和结束可以由用户显式控制。lSQL定义事务的语句定义事务的语句lBegin transactionBegin transaction( (事务开始事务开始) )lCommit transaction Commit transaction ( (事务提交,正常结束,将更新结事务提交,正常结束,将更
5、新结果写入磁盘果写入磁盘) )lRollback transactionRollback transaction( (事务回滚,撤销事务中所有已完事务回滚,撤销事务中所有已完成的更新成的更新) )lSave transactionSave transaction(保存点,可以只撤消部分事务)保存点,可以只撤消部分事务)9 事务的基本概念事务的基本概念l显式定义方式显式定义方式 BEGIN TRANSACTION BEGIN TRANSACTION SQL 语句语句1 SQL 语句语句1 SQL 语句语句2 SQL 语句语句2 。 。 COMMIT ROLLBACK10COMMIT事务正常结束事
6、务正常结束 提交提交事务的所有操作(事务的所有操作(读读+更新更新)事务中所有对数据库的更新事务中所有对数据库的更新永久永久生效生效ROLLBACK事务异常终止事务异常终止l事务运行的过程中发生了故障,不能继续执行,回滚事事务运行的过程中发生了故障,不能继续执行,回滚事务的所有务的所有更新更新操作操作l事务回滚到事务回滚到开始开始时的状态时的状态 事务的基本概念事务的基本概念11事务的基本概念事务的基本概念l隐含事务与自动提交隐含事务与自动提交 ALTER INSERT CREATE DELETE DROP SELECT UPDATE TRUNCATE TABEL12例:删除仓库例:删除仓库“
7、WH1”,并将职工并将职工T表当中所有在表当中所有在“WH1”仓库中职工记录删除。仓库中职工记录删除。事务案例事务案例BEGIN TRANSACTION MYDELDELETE FROM 仓库仓库TWHERE 仓库号仓库号=WH1DELETE FROM 职工职工TWHERE 仓库号仓库号=WH1IF ERROR0ROLLBACK TRANSACTION MYDELELSECOMMIT TRANSACTION MYDEL13l恢复机制与并发控制机制的提出恢复机制与并发控制机制的提出l事务在运行过程中因某种故障被强行终止,数据库一致性被破坏,需进行恢复。l多个事务并行运行时,不同事务的各种操作交叉
8、进行,为保证各事务的执行互不干扰,需进行并发控制。l事务是恢复和并发控制的基本单位事务是恢复和并发控制的基本单位 事务的基本概念事务的基本概念14l干扰问题干扰问题 l解决干扰解决干扰封锁封锁 l封锁不当封锁不当死锁死锁 l封锁与隔离级别封锁与隔离级别 并发控制15干扰问题l丢失更新问题丢失更新问题l未提交依赖未提交依赖(读读“脏脏”数据数据)问题问题l不一致分析问题不一致分析问题l幻象读问题幻象读问题16丢失更新问题l例:例:l旅客旅客A A来到来到A A售票处,要买一张售票处,要买一张1515日北京到上海的日北京到上海的1313次直次直达快速列车的软卧车票,售票员达快速列车的软卧车票,售票
9、员A A(下称用户下称用户A A)在终端在终端A A查看剩余票信息;查看剩余票信息; l几乎在同时,旅客几乎在同时,旅客B B来到来到B B售票处,也要买一张售票处,也要买一张1515日北京日北京到上海的到上海的1313次直达快速列车的软卧车票,售票员次直达快速列车的软卧车票,售票员B B(下下称用户称用户B B)从终端从终端B B查到了同样的剩余票信息;查到了同样的剩余票信息; l旅客旅客A A买了一张买了一张1515日日1313次次7 7车厢车厢5 5号下铺的软卧票,用户号下铺的软卧票,用户A A更新剩余票信息并将它存入数据库;更新剩余票信息并将它存入数据库; l这时用户这时用户B B不知
10、道用户不知道用户A A已经将已经将1515日日1313次次7 7车厢车厢5 5号下铺的号下铺的软卧票卖出,使旅客软卧票卖出,使旅客B B也买了一张也买了一张1515日日1313次次7 7车厢车厢5 5号下号下铺的软卧票,用户铺的软卧票,用户B B更新剩余票信息并将它存入数据库更新剩余票信息并将它存入数据库(重复了用户(重复了用户A A已经做过的更新)。已经做过的更新)。 总的效果:总的效果:1515日日1313次次7 7车厢车厢5 5号下铺的软卧票号下铺的软卧票卖了两次。其原因是:允许了用户卖了两次。其原因是:允许了用户B B在过时的在过时的信息基础上去更新数据库,而没有迫使他去信息基础上去更
11、新数据库,而没有迫使他去看最新的信息。看最新的信息。 17丢失更新问题 用用SQL术语描述丢失更新问题术语描述丢失更新问题18未提交依赖问题 l未提交依赖问题也称为未提交依赖问题也称为读读“脏脏”(Dirty Read)数据问题,查询一个已数据问题,查询一个已经被其他事务更新、但经被其他事务更新、但尚未提交的元组,将会尚未提交的元组,将会引起未提交依赖问题。引起未提交依赖问题。 19不一致分析问题不一致分析问题 l不一致分析问题也称为不一致分析问题也称为不可重复读问题,很多不可重复读问题,很多应用可能需要校验功能,应用可能需要校验功能,这时往往需要连续两次这时往往需要连续两次或多次读数据进行校
12、验或多次读数据进行校验和分析,结果由于其他和分析,结果由于其他事务的干扰,使得前后事务的干扰,使得前后结果不一致,从而产生结果不一致,从而产生校验错误(即不一致的校验错误(即不一致的分析)。分析)。 20幻象读问题幻象读问题 l幻象读问题与不一致分析问题有关,当事务幻象读问题与不一致分析问题有关,当事务A读数据时,事务读数据时,事务B在对同一个关系进行插入或在对同一个关系进行插入或删除操作,这时事务删除操作,这时事务A再读同一条件的元组时,再读同一条件的元组时,会发现神秘地多出了一些元组或丢失了一些元会发现神秘地多出了一些元组或丢失了一些元组,把这种现象称作幻象读。组,把这种现象称作幻象读。
13、21可串行性l各单个事务如能将数据库从一个正确状态转变各单个事务如能将数据库从一个正确状态转变为另一个正确状态,则认为该事务是正确的;为另一个正确状态,则认为该事务是正确的;l按任何一个串行顺序依次执行多个事务是正确按任何一个串行顺序依次执行多个事务是正确的。的。l事物交叉过程是正确的,当且仅当其与串行执事物交叉过程是正确的,当且仅当其与串行执行过程等价,则事务是可串行化的。行过程等价,则事务是可串行化的。22可串行性例子:两个事务:初值:例子:两个事务:初值:A=10,B=10。T1:SELECT A UPDATE A=A-5 SELECT B UPDATE B=B+5T2:SELECT B
14、 UPDATE B=B-523可串行性T1: SELECT A UPDATE A=A-5 SELECT B UPDATE B=B+5 T2: SELECT B UPDATE B=B-524可串行性T1: SELECT A UPDATE A=A-5 SELECT B UPDATE B=B+5 T2: SELECT B UPDATE B=B-525可串行性T1:SELECT AUPDATE A=A-5SELECT BUPDATE B=B+5T2:SELECT BUPDATE B=B-526可串行性T1:SELECT AUPDATE A=A-5SELECT BUPDATE B=B+5T2:SELEC
15、T BUPDATE B=B-5不可串行化不可串行化27封锁 l封锁的基本技术封锁的基本技术 l封锁机制封锁机制 lSQL Server中与封锁有关的命令中与封锁有关的命令 l封锁粒度封锁粒度 l意向锁意向锁 28封锁的基本技术封锁的基本技术l当需要查询或更新数据时,先对数据进行封锁,以避免来当需要查询或更新数据时,先对数据进行封锁,以避免来自其他事务的干扰。针对不同的干扰问题可以有不同的自其他事务的干扰。针对不同的干扰问题可以有不同的封锁机制。封锁机制。 l以丢失更新问题为例,实施封锁的基本思想是:当一个用以丢失更新问题为例,实施封锁的基本思想是:当一个用户对一个表或记录进行更新时,封锁该表或
16、记录,使其他户对一个表或记录进行更新时,封锁该表或记录,使其他用户不能在同一时刻更新相同的表或记录,迫使其他用用户不能在同一时刻更新相同的表或记录,迫使其他用户在更新后的基础上(而不是在更新前的基础上)再实施户在更新后的基础上(而不是在更新前的基础上)再实施另外的更新操作。另外的更新操作。 29封锁的基本技术封锁的基本技术实施封锁以后的事件进程实施封锁以后的事件进程30封锁机制封锁机制 l共享封锁共享封锁 l独占封锁独占封锁 l更新封锁更新封锁 有些封锁在执行完相应操作后就自动释放封锁,有些有些封锁在执行完相应操作后就自动释放封锁,有些封锁则保持到事务结束(提交或撤消)时才释放(无论如封锁则保
17、持到事务结束(提交或撤消)时才释放(无论如何,所有的封锁都会在事务结束时自动释放)。何,所有的封锁都会在事务结束时自动释放)。 31共享封锁共享封锁 l共享封锁是为读操作设置的一种封锁,所以也共享封锁是为读操作设置的一种封锁,所以也称作读封锁,或简称称作读封锁,或简称S锁,目的是想读到一组不锁,目的是想读到一组不变的数据,也就是在读数据的过程中,不允许变的数据,也就是在读数据的过程中,不允许其他用户对该数据进行任何修改操作。这种封其他用户对该数据进行任何修改操作。这种封锁可以保证最大的并发性,任何数量的用户都锁可以保证最大的并发性,任何数量的用户都可以同时对同样的数据施加这种共享锁。已经可以同
18、时对同样的数据施加这种共享锁。已经实施共享锁的表拒绝来自其他事务的独占封锁实施共享锁的表拒绝来自其他事务的独占封锁和更新封锁。和更新封锁。 32独占封锁独占封锁 l独占封锁也叫排他封锁,它是为修改操作设置独占封锁也叫排他封锁,它是为修改操作设置的一种封锁,也称为写封锁,或简称为的一种封锁,也称为写封锁,或简称为X锁,这锁,这是最严格的一类封锁。当需要对表实施插入、是最严格的一类封锁。当需要对表实施插入、删除或修改操作时,应该使用独占封锁。已经删除或修改操作时,应该使用独占封锁。已经实施独占封锁的表,拒绝来自其他用户的任何实施独占封锁的表,拒绝来自其他用户的任何封锁。封锁。33更新封锁更新封锁
19、l当需要对一个记录或一组记录进行更新时(只当需要对一个记录或一组记录进行更新时(只是修改,不包括插入和删除)使用更新封锁,是修改,不包括插入和删除)使用更新封锁,该封锁的目的是防止其他用户在同一时刻修改该封锁的目的是防止其他用户在同一时刻修改同一记录。已经实施更新封锁的记录,拒绝来同一记录。已经实施更新封锁的记录,拒绝来自其他用户的任何封锁。自其他用户的任何封锁。34SQL Server中与封锁有关的命令中与封锁有关的命令 lSQL Server的封锁操作是在相关语句的的封锁操作是在相关语句的“WITH ()”子句中完成的,该短子句中完成的,该短语可以在语可以在SELECT、INSERT、UP
20、DATE和和DELETE等语句中指定表级锁定的方式和范围。等语句中指定表级锁定的方式和范围。35SQL Server中与封锁有关的命令中与封锁有关的命令l常用的封锁关键词有:常用的封锁关键词有:lTABLOCKTABLOCK:对表施行共享封锁,在读完数据后立刻释放对表施行共享封锁,在读完数据后立刻释放封锁,此类封锁可以避免读封锁,此类封锁可以避免读“脏脏”数据,但不具有可数据,但不具有可重复读的特性。重复读的特性。 lHOLDLOCKHOLDLOCK:与与TABLOCKTABLOCK一起使用,可将共享锁保留到事一起使用,可将共享锁保留到事务完成,而不是在读完数据后立即释放锁,这样可以务完成,而
21、不是在读完数据后立即释放锁,这样可以保证数据的可重复独特性。保证数据的可重复独特性。 36SQL Server中与封锁有关的命令中与封锁有关的命令lNOLOCKNOLOCK:不进行封锁,此关键词仅应用于不进行封锁,此关键词仅应用于SELECTSELECT语句,语句,这样可能会读取未提交事务的数据,即有可能发生这样可能会读取未提交事务的数据,即有可能发生“脏脏”读。读。 lTABLOCKXTABLOCKX:对表实施独占封锁。对表实施独占封锁。 lUPDLOCKUPDLOCK:对表中的指定元组实施更新封锁;这时其他对表中的指定元组实施更新封锁;这时其他事务可以对同一表中的其他元组也实施更新封锁,但
22、是事务可以对同一表中的其他元组也实施更新封锁,但是不允许对表实施共享封锁和独占封锁。不允许对表实施共享封锁和独占封锁。 37SQL Server中与封锁有关的命令中与封锁有关的命令R(日期日期,车次车次,座别座别,座位号座位号,状态状态) 状态初值为:状态初值为:NULLDECLARE d datetime, t char(6), s char(2), n char(10)BEGIN TRANSACTIONSELECT n=座位号座位号 FROM R WITH (UPDLOCK)WHERE 日期日期 = d AND 车次车次 = t AND 座别座别 = s AND 状态状态 IS NULLI
展开阅读全文