数据库事务管理 PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
事务管理
1
事务管理
问题的引入 事务 并发控制 数据库恢复
2
问题的引入
多用户同时操作数据库 系统在执行用户的请求时出现故障
例如:帐户A转帐给帐户B10000元。 UPDATE YHZH SET 余额=余额-10000 WHERE 帐号 =‘A’ UPDATE YHZH SET 余额=余额+10000 WHERE 帐号 =‘B’
④
A←A-3
写回A=13
T1的修改被T2覆盖了!
7
事务的基本概念
事务的开始和结束可以由用户显式控制。 SQL定义事务的语句
Begin transaction(事务开始) Commit transaction (事务提交,正常结束,将更新结
果写入磁盘) Rollback transaction(事务回滚,撤销事务中所有已完
18
不一致分析问题
不一致分析问题也称为 不可重复读问题,很多 应用可能需要校验功能, 这时往往需要连续两次 或多次读数据进行校验 和分析,结果由于其他 事务的干扰,使得前后 结果不一致,从而产生 校验错误(即不一致的 分析)。
19
幻象读问题
幻象读问题与不一致分析问题有关,当事务A 读数据时,事务B在对同一个关系进行插入或 删除操作,这时事务A再读同一条件的元组时, 会发现神秘地多出了一些元组或丢失了一些元 组,把这种现象称作幻象读。
成的更新) Save transaction(保存点,可以只撤消部分事务)
8
事务的基本概念
显式定义方式
BEGIN TRANSACTION SQL 语句1 SQL 语句2 。。。。。
COMMIT
BEGIN TRANSACTION SQL 语句1 SQL 语句2 。。。。。
ROLLBACK
9
事务的基本概念
5
事务的性质
银行转帐:从帐号A中取出一万元,存入帐号B。
定义一个事务,该事务包括两个操作
A A=A-1
B B=B+1
这两个操作要么全做,要么全不做
全做或者全不做,数据库都处于一致性状态。
如果只做一个操作,数据库就处于不一致性状态。
6
事务的性质
T1
T2
① 读A=16
②
读A=16
③ A←A-1 写回A=15
3
事务的基本概念
事务(Transaction) 用户定义的一个对数据库读写操作序列 一个不可分割的工作单位
在关系数据库中,事务可以是一条、一组SQL语 句,或整个程序。
事务和程序的区别? 程序包含多个事务
4
事务的性质
原子性(Atomicity)
事务中的操作要么都做,要么都不做 (All or None)
T2:SELECT B UPDATE B=B-5
COMMIT 事务正常结束 提交事务的所有操作(读+更新) 事务中所有对数据库的更新永久生效
ROLLBACK 事务异常终止 事务运行的过程中发生了故障,不能继续执行,回滚事 务的所有更新操作 事务回滚到开始时的状态
10
事务的基本概念
隐含事务与自动提交
ALTER CREATE DROP UPDATE
软卧票卖出,使旅客B也买了一张15日13次7车厢5号下 铺的软卧票,用户B更新剩余票信息并将它存入数据库 (重复了用户A已经做过的更新)。
16
丢失更新问题
用SQL术语描述丢失更新问题
17
未提交依赖问题
未提交依赖问题也称为 读“脏”(Dirty Read) 数据问题,查询一个已 经被其他事务更新、但 尚未提交的元组,将会 引起未提交依赖问题。
14
干扰问题
丢失更新问题 未提交依赖(读“脏”数据)问题 不一致分析问题 幻象读问题
15
丢失更新问题
例: 旅客A来到A售票处,要买一张15日北京到上海的13次直 达快速列车的软卧车票,售票员A(下称用户A)在终端 A查看剩余票信息;
总 卖 的了几到称乎上用效两在海户果次B同的):。1时3从,次1其终5旅直端原日客达B因1B查快来3到速是次到了列B:7售同车车允样票的厢的处软许5剩,卧了号余也车用下票要票信买,户铺息一售B的;张票在软1员5过B日卧(时北下票京的 信 息旅客基A买础了上一去张1更5日新13数次7据车库厢5,号下而铺没的有软卧迫票使,他用户去A 看 最更这新时新剩用的余户信B票不信息知息道。并用将户它A存已入经数将据15库日;13次7车厢5号下铺的
一致性(Consistency)
事务执行的结果必须使数据库从一个一致性状态变到另一 个一致性状态
与原子性密切相关
隔离性(Isolation)
并发执行的各事务不能相互干扰
持续性/永久性(Durability)
事务一旦提交,它对数据库的更新不再受后继操作或故障 的影响
★ DBMS中事务处理必须保证其ACID特性,这样才能保证数据库中数 据的安全和正确。
20
可串行性
各单个事务如能将数据库从一个正确状态转变 为另一个正确状态,则认为该事务是正确的;
按任何一个串行顺序依次执行多个事务是正确 的。
事物交叉过程是正确的,当且仅当其与串行执 行过程等价,则事务是可串行化的。
21
可串行性
例子:两个事务:初值:A=10,B=10。
T1:SELECT A UPDATE A=A-5 SELECT B UPDATE B=B+5
INSERT DELETE SELECT TRUNCATE TABEL
11
事务案例
例:删除仓库“WH1”,并将职工T表当中所有在“WH1” 仓库中职工记录删除。 BEGIN TRANSACTION MYDEL DELETE FROM 仓库T WHERE 仓库号='WH1' DELETE FROM 职工T WHERE 仓库号='WH1' IF @@ERROR<>0 ROLLBACK TRANSACTION MYDEL ELSE COMMIT TRANSACTION MYDEL
12
事务的基本概念
恢复机制Fra Baidu bibliotek并发控制机制的提出
事务在运行过程中因某种故障被强行终 止,数据库一致性被破坏,需进行恢复。
多个事务并行运行时,不同事务的各种 操作交叉进行,为保证各事务的执行互 不干扰,需进行并发控制。
事务是恢复和并发控制的基本单位
13
并发控制
干扰问题 解决干扰——封锁 封锁不当——死锁 封锁与隔离级别
1
事务管理
问题的引入 事务 并发控制 数据库恢复
2
问题的引入
多用户同时操作数据库 系统在执行用户的请求时出现故障
例如:帐户A转帐给帐户B10000元。 UPDATE YHZH SET 余额=余额-10000 WHERE 帐号 =‘A’ UPDATE YHZH SET 余额=余额+10000 WHERE 帐号 =‘B’
④
A←A-3
写回A=13
T1的修改被T2覆盖了!
7
事务的基本概念
事务的开始和结束可以由用户显式控制。 SQL定义事务的语句
Begin transaction(事务开始) Commit transaction (事务提交,正常结束,将更新结
果写入磁盘) Rollback transaction(事务回滚,撤销事务中所有已完
18
不一致分析问题
不一致分析问题也称为 不可重复读问题,很多 应用可能需要校验功能, 这时往往需要连续两次 或多次读数据进行校验 和分析,结果由于其他 事务的干扰,使得前后 结果不一致,从而产生 校验错误(即不一致的 分析)。
19
幻象读问题
幻象读问题与不一致分析问题有关,当事务A 读数据时,事务B在对同一个关系进行插入或 删除操作,这时事务A再读同一条件的元组时, 会发现神秘地多出了一些元组或丢失了一些元 组,把这种现象称作幻象读。
成的更新) Save transaction(保存点,可以只撤消部分事务)
8
事务的基本概念
显式定义方式
BEGIN TRANSACTION SQL 语句1 SQL 语句2 。。。。。
COMMIT
BEGIN TRANSACTION SQL 语句1 SQL 语句2 。。。。。
ROLLBACK
9
事务的基本概念
5
事务的性质
银行转帐:从帐号A中取出一万元,存入帐号B。
定义一个事务,该事务包括两个操作
A A=A-1
B B=B+1
这两个操作要么全做,要么全不做
全做或者全不做,数据库都处于一致性状态。
如果只做一个操作,数据库就处于不一致性状态。
6
事务的性质
T1
T2
① 读A=16
②
读A=16
③ A←A-1 写回A=15
3
事务的基本概念
事务(Transaction) 用户定义的一个对数据库读写操作序列 一个不可分割的工作单位
在关系数据库中,事务可以是一条、一组SQL语 句,或整个程序。
事务和程序的区别? 程序包含多个事务
4
事务的性质
原子性(Atomicity)
事务中的操作要么都做,要么都不做 (All or None)
T2:SELECT B UPDATE B=B-5
COMMIT 事务正常结束 提交事务的所有操作(读+更新) 事务中所有对数据库的更新永久生效
ROLLBACK 事务异常终止 事务运行的过程中发生了故障,不能继续执行,回滚事 务的所有更新操作 事务回滚到开始时的状态
10
事务的基本概念
隐含事务与自动提交
ALTER CREATE DROP UPDATE
软卧票卖出,使旅客B也买了一张15日13次7车厢5号下 铺的软卧票,用户B更新剩余票信息并将它存入数据库 (重复了用户A已经做过的更新)。
16
丢失更新问题
用SQL术语描述丢失更新问题
17
未提交依赖问题
未提交依赖问题也称为 读“脏”(Dirty Read) 数据问题,查询一个已 经被其他事务更新、但 尚未提交的元组,将会 引起未提交依赖问题。
14
干扰问题
丢失更新问题 未提交依赖(读“脏”数据)问题 不一致分析问题 幻象读问题
15
丢失更新问题
例: 旅客A来到A售票处,要买一张15日北京到上海的13次直 达快速列车的软卧车票,售票员A(下称用户A)在终端 A查看剩余票信息;
总 卖 的了几到称乎上用效两在海户果次B同的):。1时3从,次1其终5旅直端原日客达B因1B查快来3到速是次到了列B:7售同车车允样票的厢的处软许5剩,卧了号余也车用下票要票信买,户铺息一售B的;张票在软1员5过B日卧(时北下票京的 信 息旅客基A买础了上一去张1更5日新13数次7据车库厢5,号下而铺没的有软卧迫票使,他用户去A 看 最更这新时新剩用的余户信B票不信息知息道。并用将户它A存已入经数将据15库日;13次7车厢5号下铺的
一致性(Consistency)
事务执行的结果必须使数据库从一个一致性状态变到另一 个一致性状态
与原子性密切相关
隔离性(Isolation)
并发执行的各事务不能相互干扰
持续性/永久性(Durability)
事务一旦提交,它对数据库的更新不再受后继操作或故障 的影响
★ DBMS中事务处理必须保证其ACID特性,这样才能保证数据库中数 据的安全和正确。
20
可串行性
各单个事务如能将数据库从一个正确状态转变 为另一个正确状态,则认为该事务是正确的;
按任何一个串行顺序依次执行多个事务是正确 的。
事物交叉过程是正确的,当且仅当其与串行执 行过程等价,则事务是可串行化的。
21
可串行性
例子:两个事务:初值:A=10,B=10。
T1:SELECT A UPDATE A=A-5 SELECT B UPDATE B=B+5
INSERT DELETE SELECT TRUNCATE TABEL
11
事务案例
例:删除仓库“WH1”,并将职工T表当中所有在“WH1” 仓库中职工记录删除。 BEGIN TRANSACTION MYDEL DELETE FROM 仓库T WHERE 仓库号='WH1' DELETE FROM 职工T WHERE 仓库号='WH1' IF @@ERROR<>0 ROLLBACK TRANSACTION MYDEL ELSE COMMIT TRANSACTION MYDEL
12
事务的基本概念
恢复机制Fra Baidu bibliotek并发控制机制的提出
事务在运行过程中因某种故障被强行终 止,数据库一致性被破坏,需进行恢复。
多个事务并行运行时,不同事务的各种 操作交叉进行,为保证各事务的执行互 不干扰,需进行并发控制。
事务是恢复和并发控制的基本单位
13
并发控制
干扰问题 解决干扰——封锁 封锁不当——死锁 封锁与隔离级别