《数据库事务管理...ppt》由会员分享,可在线阅读,更多相关《数据库事务管理...ppt(76页珍藏版)》请在第壹文秘上搜索。
1、事务管理事务管理18:28事务管理 l问题的引入问题的引入 l 事务事务l 并发控制并发控制 l数据库恢复数据库恢复18:28问题的引入l多用户同时操作数据库多用户同时操作数据库l系统在执行用户的请求时出现故障系统在执行用户的请求时出现故障例如:帐户例如:帐户A转帐给帐户转帐给帐户B10000元。元。UPDATE YHZH SET 余额余额=余额余额-10000 WHERE 帐号帐号=AUPDATE YHZH SET 余额余额=余额余额+10000 WHERE 帐号帐号=B18:28 事务的基本概念事务的基本概念l事务(事务(Transaction)l用户定义的一个对数据库读写用户定义的一个对
2、数据库读写操作序列操作序列l一个一个不可分割不可分割的工作单位的工作单位l在关系数据库中,事务可以是一条、一组在关系数据库中,事务可以是一条、一组SQL语语句,或整个程序。句,或整个程序。l事务和程序的区别?事务和程序的区别?l程序包含多个事务程序包含多个事务18:28 事务的性质事务的性质l原子性原子性(Atomicity)l事务中的操作要么都做,要么都不做 ( (All or None)All or None)l一致性一致性(Consistency)l事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态l与原子性密切相关l隔离性隔离性(Isolation)l并发执行的各事务不能相
3、互干扰l持续性持续性/永久性永久性(Durability)l事务一旦提交,它对数据库的更新不再受后继操作或故障的影响 DBMS中事务处理必须保证其中事务处理必须保证其ACID特性,这样才能保证数据库中数特性,这样才能保证数据库中数据的安全和正确。据的安全和正确。18:28银行转帐:从帐号银行转帐:从帐号A中取出一万元,存入帐号中取出一万元,存入帐号B。l定义一个事务,该事务包括两个操作定义一个事务,该事务包括两个操作l这两个操作要么全做,要么全不做这两个操作要么全做,要么全不做l全做或者全不做,数据库都处于一致性状态。全做或者全不做,数据库都处于一致性状态。l如果只做一个操作,数据库就处于不一
4、致性状态如果只做一个操作,数据库就处于不一致性状态。 B=B+1 A=A-1BA 事务的性质事务的性质18:28T1的修改被的修改被T2覆盖了!覆盖了! 读读A=16 AA-3写回写回A=13 读读A=16 AA-1 写回写回A=15 T2T1 事务的性质事务的性质18:28 事务的基本概念事务的基本概念l事务的开始和结束可以由用户显式控制。事务的开始和结束可以由用户显式控制。lSQL定义事务的语句定义事务的语句lBegin transactionBegin transaction( (事务开始事务开始) )lCommit transaction Commit transaction ( (事
5、务提交,正常结束,将更新结事务提交,正常结束,将更新结果写入磁盘果写入磁盘) )lRollback transactionRollback transaction( (事务回滚,撤销事务中所有已完事务回滚,撤销事务中所有已完成的更新成的更新) )lSave transactionSave transaction(保存点,可以只撤消部分事务)保存点,可以只撤消部分事务)18:28 事务的基本概念事务的基本概念l显式定义方式显式定义方式 BEGIN TRANSACTION BEGIN TRANSACTION SQL 语句语句1 SQL 语句语句1 SQL 语句语句2 SQL 语句语句2 。 。 C
6、OMMIT ROLLBACK18:28COMMIT事务正常结束事务正常结束 提交提交事务的所有操作(事务的所有操作(读读+更新更新)事务中所有对数据库的更新事务中所有对数据库的更新永久永久生效生效ROLLBACK事务异常终止事务异常终止l事务运行的过程中发生了故障,不能继续执行,回滚事事务运行的过程中发生了故障,不能继续执行,回滚事务的所有务的所有更新更新操作操作l事务回滚到事务回滚到开始开始时的状态时的状态 事务的基本概念事务的基本概念18:28事务的基本概念事务的基本概念l隐含事务与自动提交隐含事务与自动提交 ALTER INSERT CREATE DELETE DROP SELECT U
7、PDATE TRUNCATE TABEL18:28例:删除仓库例:删除仓库“WH1”,并将职工并将职工T表当中所有在表当中所有在“WH1”仓库中职工记录删除。仓库中职工记录删除。事务案例事务案例BEGIN TRANSACTION MYDELDELETE FROM 仓库仓库TWHERE 仓库号仓库号=WH1DELETE FROM 职工职工TWHERE 仓库号仓库号=WH1IF ERROR0ROLLBACK TRANSACTION MYDELELSECOMMIT TRANSACTION MYDEL18:28l恢复机制与并发控制机制的提出恢复机制与并发控制机制的提出l事务在运行过程中因某种故障被强行
8、终事务在运行过程中因某种故障被强行终止,数据库一致性被破坏,需进行止,数据库一致性被破坏,需进行恢复。恢复。l多个事务并行运行时,不同事务的各种多个事务并行运行时,不同事务的各种操作交叉进行,为保证各事务的执行互操作交叉进行,为保证各事务的执行互不干扰,需进行不干扰,需进行并发控制。并发控制。l事务是恢复和并发控制的基本单位事务是恢复和并发控制的基本单位 事务的基本概念事务的基本概念18:28l干扰问题干扰问题 l解决干扰解决干扰封锁封锁 l封锁不当封锁不当死锁死锁 l封锁与隔离级别封锁与隔离级别 并发控制18:28干扰问题l丢失更新问题丢失更新问题l未提交依赖未提交依赖(读读“脏脏”数据数据
9、)问题问题l不一致分析问题不一致分析问题l幻象读问题幻象读问题18:28丢失更新问题l例:例:l旅客旅客A A来到来到A A售票处,要买一张售票处,要买一张1515日北京到上海的日北京到上海的1313次直次直达快速列车的软卧车票,售票员达快速列车的软卧车票,售票员A A(下称用户下称用户A A)在终端在终端A A查看剩余票信息;查看剩余票信息; l几乎在同时,旅客几乎在同时,旅客B B来到来到B B售票处,也要买一张售票处,也要买一张1515日北京日北京到上海的到上海的1313次直达快速列车的软卧车票,售票员次直达快速列车的软卧车票,售票员B B(下下称用户称用户B B)从终端从终端B B查到
10、了同样的剩余票信息;查到了同样的剩余票信息; l旅客旅客A A买了一张买了一张1515日日1313次次7 7车厢车厢5 5号下铺的软卧票,用户号下铺的软卧票,用户A A更新剩余票信息并将它存入数据库;更新剩余票信息并将它存入数据库; l这时用户这时用户B B不知道用户不知道用户A A已经将已经将1515日日1313次次7 7车厢车厢5 5号下铺的号下铺的软卧票卖出,使旅客软卧票卖出,使旅客B B也买了一张也买了一张1515日日1313次次7 7车厢车厢5 5号下号下铺的软卧票,用户铺的软卧票,用户B B更新剩余票信息并将它存入数据库更新剩余票信息并将它存入数据库(重复了用户(重复了用户A A已
11、经做过的更新)。已经做过的更新)。 总的效果:总的效果:1515日日1313次次7 7车厢车厢5 5号下铺的软卧票号下铺的软卧票卖了两次。其原因是:允许了用户卖了两次。其原因是:允许了用户B B在过时的在过时的信息基础上去更新数据库,而没有迫使他去信息基础上去更新数据库,而没有迫使他去看最新的信息。看最新的信息。 18:28丢失更新问题 用用SQL术语描述丢失更新问题术语描述丢失更新问题18:28未提交依赖问题 l未提交依赖问题也称为未提交依赖问题也称为读读“脏脏”(Dirty Read)数据问题,查询一个已数据问题,查询一个已经被其他事务更新、但经被其他事务更新、但尚未提交的元组,将会尚未提
12、交的元组,将会引起未提交依赖问题。引起未提交依赖问题。 18:28不一致分析问题不一致分析问题 l不一致分析问题也称为不一致分析问题也称为不可重复读问题,很多不可重复读问题,很多应用可能需要校验功能,应用可能需要校验功能,这时往往需要连续两次这时往往需要连续两次或多次读数据进行校验或多次读数据进行校验和分析,结果由于其他和分析,结果由于其他事务的干扰,使得前后事务的干扰,使得前后结果不一致,从而产生结果不一致,从而产生校验错误(即不一致的校验错误(即不一致的分析)。分析)。 18:28幻象读问题幻象读问题 l幻象读问题与不一致分析问题有关,当事务幻象读问题与不一致分析问题有关,当事务A读数据时
13、,事务读数据时,事务B在对同一个关系进行插入或在对同一个关系进行插入或删除操作,这时事务删除操作,这时事务A再读同一条件的元组时,再读同一条件的元组时,会发现神秘地多出了一些元组或丢失了一些元会发现神秘地多出了一些元组或丢失了一些元组,把这种现象称作幻象读。组,把这种现象称作幻象读。 18:28可串行性l各单个事务如能将数据库从一个正确状态转变各单个事务如能将数据库从一个正确状态转变为另一个正确状态,则认为该事务是正确的;为另一个正确状态,则认为该事务是正确的;l按任何一个串行顺序依次执行多个事务是正确按任何一个串行顺序依次执行多个事务是正确的。的。l事物交叉过程是正确的,当且仅当其与串行执事
14、物交叉过程是正确的,当且仅当其与串行执行过程等价,则事务是可串行化的。行过程等价,则事务是可串行化的。18:28可串行性例子:两个事务:初值:例子:两个事务:初值:A=10,B=10。T1:SELECT A UPDATE A=A-5 SELECT B UPDATE B=B+5T2:SELECT B UPDATE B=B-518:28可串行性T1: SELECT A UPDATE A=A-5 SELECT B UPDATE B=B+5 T2: SELECT B UPDATE B=B-518:28可串行性T1: SELECT A UPDATE A=A-5 SELECT B UPDATE B=B+5
15、 T2: SELECT B UPDATE B=B-518:28可串行性T1:SELECT AUPDATE A=A-5SELECT BUPDATE B=B+5T2:SELECT BUPDATE B=B-518:28可串行性T1:SELECT AUPDATE A=A-5SELECT BUPDATE B=B+5T2:SELECT BUPDATE B=B-5不可串行化不可串行化18:28封锁 l封锁的基本技术封锁的基本技术 l封锁机制封锁机制 lSQL Server中与封锁有关的命令中与封锁有关的命令 l封锁粒度封锁粒度 l意向锁意向锁 18:28封锁的基本技术封锁的基本技术l当需要查询或更新数据时,
16、先对数据进行封锁,以避免当需要查询或更新数据时,先对数据进行封锁,以避免来自其他事务的干扰。针对不同的干扰问题可以有不同来自其他事务的干扰。针对不同的干扰问题可以有不同的封锁机制。的封锁机制。 l以丢失更新问题为例,实施封锁的基本思想是:当一个以丢失更新问题为例,实施封锁的基本思想是:当一个用户对一个表或记录进行更新时,封锁该表或记录,使用户对一个表或记录进行更新时,封锁该表或记录,使其他用户不能在同一时刻更新相同的表或记录,迫使其其他用户不能在同一时刻更新相同的表或记录,迫使其他用户在更新后的基础上(而不是在更新前的基础上)他用户在更新后的基础上(而不是在更新前的基础上)再实施另外的更新操作。再实施另外的更新操作。 18:28封锁的基本技术封锁的基本技术实施封锁以后的事件进程实施封锁以后的事件进程18:28封锁机制封锁机制 l共享封锁共享封锁 l独占封锁独占封锁 l更新封锁更新封锁 有些封锁在执行完相应操作后就自动释放封锁,有些有些封锁在执行完相应操作后就自动释放封锁,有些封锁则保持到事务结束(提交或撤消)时才释放(无论如封锁则保持到事务结束(提交或撤消)时才释放(无论如何,所有的封