数据库事务管理教学课程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二级封锁协议可以防止丢失更新问题,还可 以防止未提交依赖问题,但却不能防止不一 致性分析问题。
(3)三级封锁协议
三级封锁协议规定事务 T 在更新数据对象 前,必须对数据对象加 X 锁,且直到事务 T 结束时才可以释放该锁,还规定事务 T 在读取数据对象以前必须先对其加 S 锁, 该 S 锁也必须在事务 T 结束时才可释放。
(4)事务回滚(ROLLBACK TRANSACTION ):事务未完成所有数据 操作,重新返回到事务开始状态,标志着 事务的撤销。
事务的活动状态
8.1.4 SQL对事务管理的支持
标准SQL规定事务的开始一般是隐含的,而事 务的结束一般使用COMMIT TRANSACTION ROLLBACK TRANSACTION 语句。其中 ,COMMIT TRANSACTION 表示提交事务,执 行该语句后,事务对数据库的更新结果将被写 入物理磁盘数据库;而ROLLBACK TRANSACTION 表示回滚事务,执行该语句后 ,DBMS 将撤消事务对数据库所作的全部操 作,就像事务没有被执行一样。
8.1.2可串行性理论
对于调度S中的每个事务T,如果T中所有的操作在调度中都 是连续执行的,那么就称调度S是串行的;否则调度S是非串 行的。
串行调度中不会发生不同事务的交替操作。 如果具有n个事务的调度S等价于某个具有相同n个事务的串 行调度,那么S就是可串行化调度。
冲突操作是指不同的事务对同一个数据的”读—写”操作 和“写—写”操作,其他操作时不冲突的。不同事务的冲突操 作和同一事务的两个操作时不能交换的。
事务概念
事务特性(ACID)
原子性(Atomicity) 事务中包含的所有操作要么全做,要么全不做 原子性由恢复机制实现
一致性(Consistency) 事务的隔离执行必须保证数据库的一致性 事务开始前,数据库处于一致性的状态;事务结 束后,数据库必须仍处于一致性状态 数据库的一致性状态由用户来负责,由并发控制 机制实现 如银行转帐,转帐前后两个帐户金额之和应保持 不变(意大利香肠)
S2= R1(A)W1(A)R1(B)W1(B) R2(A)W2(A)R2(B)W2(B)
S2等价于一个串行调度T1T2,所以S1是冲突可串行化 调度。
注意:冲突可串行化调度是可串行化调度的充分条件 ,不是必要条件。还有不满足冲突可串行化条件的可 串行化调度。
8.1.3 事务基本操作与活动状态
事务概念
隔离性(Isolation) 系统必须保证事务不受其它并发执行事务的影响 对任何一对事务T1,T2,在T1看来,T2要么在T1开 始之前已经结束,要么在T1完成之后再开始执行 隔离性通过并发控制机制实现
持续性(Durability) 一个事务一旦提交之后,它对数据库的影响必须是 永久的 系统发生故障不能改变事务的持久性 持续性通过恢复机制实现
(1)一级封锁协议
一级封锁协议规定事务 T 在更新数据对象以前, 必须对该数据对象加排它锁,并且直到事务 T 结束时才可以释放该锁。
利用一级封锁协议可以防止丢失更新问题的发 生。
(2)二级封锁协议
二级封锁协议规定事务 T 在更新数据对象以 前必须对数据对象加 X 锁,且直到事务 T 结束时才可以释放该锁,还规定事务 T 在读 取数据对象以前必须先对其加 S 锁,读完后 即可释放 S 锁。
8.2 并发控制与封锁
8.2.1 并发操作与数据的不一致性
并发操作可能带来的数据不一致性情况 有三种 :
1.丢失修改 2.读过时数据 3.读“脏”数据
8.2.2封锁
封锁就是事务 T 在对某个数据对象如关系、元组 等进行查询或更新操作以前 ,应先向系统发出对该数据 对象进行加锁的请求,否则就不可以进行相应的操作,而 事务在获得了对该数据对象的锁以后,其他的事务就不 能查询或更新此数据对象,直到相应的锁被释放为止。
一次加锁锁住的数据单位大小被称为锁的粒度 (granularity),如果数据单位比较小,我们说锁是 细(fine)粒度的,否则就说锁是粗(coarse)粒度 的。
2)封锁协议
一级封锁协议 二级封锁协议 三级封锁协议
封锁协议就是在对数据对象加锁、持锁和 释放锁时所约定的一些规则。不同的封锁规 则形成了不同的封锁协议
1.事务操作的组成 事务操作可以看做若干部分组成 (1)事务开始(BEGIN TRANSACTION):
事务开始执行; (2)事务读写操作(READ/WRITE
TRANSACTION):事务进行数据操作
8.1.3 事务基本操作与活动状态
(3)事务提交(COMMIT TRANSACTION ): 事务完成所有数据操作,同时保存操作 结果,它标志着事务成功完成。
例 8.1 有两个调度:事务T1=R1(A)W1(A)R1(B)W1(B) ,事务T2=R2(A)W2(A)R2(B)W2(B)
有调度S1= R1(A)W1(A)R2(A)W2(A)R1(B)W1(B)R2(B)W2(B)
R2(A)W2(A) 与 R1(B)W1(B)这两组操作操作的对象不 是同一对象,因此不是冲突操作,故把R2(A)W2(A) 与 R1(B)W1(B)交换得到:
排它锁和共享锁 封锁协议 活锁和死锁
1)排它锁和共享锁
排它锁和共享锁是最基本的封锁方式。 如果事务 T 对数据对象 Y 加上了排它锁(记为
X 锁),那么 T 既可以读取 Y ,也可以更新 Y 。 如果事务 T 对数据对象 Y 加上了共享锁(记为
S 锁),那么 T 可以读取 Y,但不能更新 Y。
数据库事务管理教学课程
路漫漫其悠远
少壮不努力,老大徒悲伤
第8章 数据库事务管理
本Baidu Nhomakorabea内容概述
8.1事务与事务管理 8.2并发控制与封锁机制 8.3数据库恢复
8.1事务与事务管理
8.1.1 事务的概念 事务定义
事务是构成数据库处理逻辑单元的可执行程序, 由用户定义的一组操作序列(包括插入、删除、 修改或检索等操作)组成,序列中的操作要么全 做,要么全不做,是一个不可分割的工作单位。
(3)三级封锁协议
三级封锁协议规定事务 T 在更新数据对象 前,必须对数据对象加 X 锁,且直到事务 T 结束时才可以释放该锁,还规定事务 T 在读取数据对象以前必须先对其加 S 锁, 该 S 锁也必须在事务 T 结束时才可释放。
(4)事务回滚(ROLLBACK TRANSACTION ):事务未完成所有数据 操作,重新返回到事务开始状态,标志着 事务的撤销。
事务的活动状态
8.1.4 SQL对事务管理的支持
标准SQL规定事务的开始一般是隐含的,而事 务的结束一般使用COMMIT TRANSACTION ROLLBACK TRANSACTION 语句。其中 ,COMMIT TRANSACTION 表示提交事务,执 行该语句后,事务对数据库的更新结果将被写 入物理磁盘数据库;而ROLLBACK TRANSACTION 表示回滚事务,执行该语句后 ,DBMS 将撤消事务对数据库所作的全部操 作,就像事务没有被执行一样。
8.1.2可串行性理论
对于调度S中的每个事务T,如果T中所有的操作在调度中都 是连续执行的,那么就称调度S是串行的;否则调度S是非串 行的。
串行调度中不会发生不同事务的交替操作。 如果具有n个事务的调度S等价于某个具有相同n个事务的串 行调度,那么S就是可串行化调度。
冲突操作是指不同的事务对同一个数据的”读—写”操作 和“写—写”操作,其他操作时不冲突的。不同事务的冲突操 作和同一事务的两个操作时不能交换的。
事务概念
事务特性(ACID)
原子性(Atomicity) 事务中包含的所有操作要么全做,要么全不做 原子性由恢复机制实现
一致性(Consistency) 事务的隔离执行必须保证数据库的一致性 事务开始前,数据库处于一致性的状态;事务结 束后,数据库必须仍处于一致性状态 数据库的一致性状态由用户来负责,由并发控制 机制实现 如银行转帐,转帐前后两个帐户金额之和应保持 不变(意大利香肠)
S2= R1(A)W1(A)R1(B)W1(B) R2(A)W2(A)R2(B)W2(B)
S2等价于一个串行调度T1T2,所以S1是冲突可串行化 调度。
注意:冲突可串行化调度是可串行化调度的充分条件 ,不是必要条件。还有不满足冲突可串行化条件的可 串行化调度。
8.1.3 事务基本操作与活动状态
事务概念
隔离性(Isolation) 系统必须保证事务不受其它并发执行事务的影响 对任何一对事务T1,T2,在T1看来,T2要么在T1开 始之前已经结束,要么在T1完成之后再开始执行 隔离性通过并发控制机制实现
持续性(Durability) 一个事务一旦提交之后,它对数据库的影响必须是 永久的 系统发生故障不能改变事务的持久性 持续性通过恢复机制实现
(1)一级封锁协议
一级封锁协议规定事务 T 在更新数据对象以前, 必须对该数据对象加排它锁,并且直到事务 T 结束时才可以释放该锁。
利用一级封锁协议可以防止丢失更新问题的发 生。
(2)二级封锁协议
二级封锁协议规定事务 T 在更新数据对象以 前必须对数据对象加 X 锁,且直到事务 T 结束时才可以释放该锁,还规定事务 T 在读 取数据对象以前必须先对其加 S 锁,读完后 即可释放 S 锁。
8.2 并发控制与封锁
8.2.1 并发操作与数据的不一致性
并发操作可能带来的数据不一致性情况 有三种 :
1.丢失修改 2.读过时数据 3.读“脏”数据
8.2.2封锁
封锁就是事务 T 在对某个数据对象如关系、元组 等进行查询或更新操作以前 ,应先向系统发出对该数据 对象进行加锁的请求,否则就不可以进行相应的操作,而 事务在获得了对该数据对象的锁以后,其他的事务就不 能查询或更新此数据对象,直到相应的锁被释放为止。
一次加锁锁住的数据单位大小被称为锁的粒度 (granularity),如果数据单位比较小,我们说锁是 细(fine)粒度的,否则就说锁是粗(coarse)粒度 的。
2)封锁协议
一级封锁协议 二级封锁协议 三级封锁协议
封锁协议就是在对数据对象加锁、持锁和 释放锁时所约定的一些规则。不同的封锁规 则形成了不同的封锁协议
1.事务操作的组成 事务操作可以看做若干部分组成 (1)事务开始(BEGIN TRANSACTION):
事务开始执行; (2)事务读写操作(READ/WRITE
TRANSACTION):事务进行数据操作
8.1.3 事务基本操作与活动状态
(3)事务提交(COMMIT TRANSACTION ): 事务完成所有数据操作,同时保存操作 结果,它标志着事务成功完成。
例 8.1 有两个调度:事务T1=R1(A)W1(A)R1(B)W1(B) ,事务T2=R2(A)W2(A)R2(B)W2(B)
有调度S1= R1(A)W1(A)R2(A)W2(A)R1(B)W1(B)R2(B)W2(B)
R2(A)W2(A) 与 R1(B)W1(B)这两组操作操作的对象不 是同一对象,因此不是冲突操作,故把R2(A)W2(A) 与 R1(B)W1(B)交换得到:
排它锁和共享锁 封锁协议 活锁和死锁
1)排它锁和共享锁
排它锁和共享锁是最基本的封锁方式。 如果事务 T 对数据对象 Y 加上了排它锁(记为
X 锁),那么 T 既可以读取 Y ,也可以更新 Y 。 如果事务 T 对数据对象 Y 加上了共享锁(记为
S 锁),那么 T 可以读取 Y,但不能更新 Y。
数据库事务管理教学课程
路漫漫其悠远
少壮不努力,老大徒悲伤
第8章 数据库事务管理
本Baidu Nhomakorabea内容概述
8.1事务与事务管理 8.2并发控制与封锁机制 8.3数据库恢复
8.1事务与事务管理
8.1.1 事务的概念 事务定义
事务是构成数据库处理逻辑单元的可执行程序, 由用户定义的一组操作序列(包括插入、删除、 修改或检索等操作)组成,序列中的操作要么全 做,要么全不做,是一个不可分割的工作单位。