数据库事务管理教学课程.pptx
合集下载
数据库基础PPT第7章事务处理及锁
7.3.2 SQL Server中锁的查看
• SQL Server为了尽量减少锁定的开销,允许一个事务锁定不同 类型的资源,具有多粒度锁定机制。SQL Server可以对行、页 、键、键范围、索引、表或数据库获取锁。
• 数据行(Row)。数据页中的单行数据。
• 索引行。索引页中的单行数据,即索引的键值。
• 这些问题主要体现在下面几个方面。
• 1.读“脏”数据库(Dirty Read)
时间
t0 t1 t2 t3
读“脏”数据
事务T1
数据库中 R的值
1000
READ R
R=R-200
UPDATE R
事务 T2
时间
t4 t5 t6 t7
读“脏”数据
事务T1
数据库 中R的值
800
事务T2
READ R
ROLLBACK
WHERE stu_id='2001020222' ROLLBACK TRANSACTION savepoint_1 COMMIT TRANSACTION GO
• 【例7.2】事务的隐式启动。
USE jxgl
GO
SET IMPLICIT_TRANSACTIONS ON
--启动隐式事务模式
GO
--第一个事务由INSERT语句启动
1000
• 2.不可重复读(None-Repeatable Read)
时间
不可重复读
事务T1
数据库 中R的值
事务T2
时间
事务T1
t0
1000
t4
t1 READ R
t5
t2
READ R t6
t3
R=R-300 t7 READ R
数据库系统15事务处理.ppt
自动事务: 这是 SQL Server 的默认事务管 理模式. 每个T-SQL语句在成功执行完成后, 都 被自动提交; 如果遇到错误, 则自动回滚该语句.
2 撰写事务程序
在 SQL Server 中应用程序主要通过指定事 务的启动和结束的时间来控制事务. 在一个事务 启动之后, 结束之前, 系统执行的所有 T-SQL 语句都是该事务的一部分.
访问分布式数据库也需要使用事务, 以保证 对数据的所有操作都完整、一致, 要么全部成功, 要么全部失败, 这种跨越了分布的多个数据库的 事务即为分布式事务.
以电子商务的购物程序为例. 某顾客使用信 用卡从网站上购买玫瑰花, 他可以登录某个销售 鲜花的站点, 在那里购买想要的鲜花并要求送货 给某朋友. 下面是整个流程.
3 使用事务的注意事项
在启动事务之后, 系统为了维护事务的ACID 属性, 必须耗费很多的资源. 例如, 当事务执行 过程中涉及到数据的修改时, SQL Server 就会自 动启动独占锁, 以防止任何其他事务读取该数据, 而这种锁定会一直持续到事务结束为止. 这期间 其他用户将不能访问这些数据, 所以在多用户系 统中, 使用事务处理程序时必须有意识地提高事 务的工作效率.
● 原子性: 事务必须是原子的工作, 数据要 么全部被修改, 要么全部不被修改.
● 一致性: 事务完成时, 全部的数据必须维 持一致的状态.
● 隔离性: 同时执行的事务所进行的修改, 必须与其他任何并行的事务所进行的修改隔离.
● 持久性: 事务完成之后, 其据库的全部 事务, 所以当系统因电源中断、软件失败、客户 端出现问题而取消事务时, 它可以作为回复数据 之用. 系统因故中断, 可以自动向前完成已提交 的事务, 也可用于恢复尚未提交的事务.
2 撰写事务程序
在 SQL Server 中应用程序主要通过指定事 务的启动和结束的时间来控制事务. 在一个事务 启动之后, 结束之前, 系统执行的所有 T-SQL 语句都是该事务的一部分.
访问分布式数据库也需要使用事务, 以保证 对数据的所有操作都完整、一致, 要么全部成功, 要么全部失败, 这种跨越了分布的多个数据库的 事务即为分布式事务.
以电子商务的购物程序为例. 某顾客使用信 用卡从网站上购买玫瑰花, 他可以登录某个销售 鲜花的站点, 在那里购买想要的鲜花并要求送货 给某朋友. 下面是整个流程.
3 使用事务的注意事项
在启动事务之后, 系统为了维护事务的ACID 属性, 必须耗费很多的资源. 例如, 当事务执行 过程中涉及到数据的修改时, SQL Server 就会自 动启动独占锁, 以防止任何其他事务读取该数据, 而这种锁定会一直持续到事务结束为止. 这期间 其他用户将不能访问这些数据, 所以在多用户系 统中, 使用事务处理程序时必须有意识地提高事 务的工作效率.
● 原子性: 事务必须是原子的工作, 数据要 么全部被修改, 要么全部不被修改.
● 一致性: 事务完成时, 全部的数据必须维 持一致的状态.
● 隔离性: 同时执行的事务所进行的修改, 必须与其他任何并行的事务所进行的修改隔离.
● 持久性: 事务完成之后, 其据库的全部 事务, 所以当系统因电源中断、软件失败、客户 端出现问题而取消事务时, 它可以作为回复数据 之用. 系统因故中断, 可以自动向前完成已提交 的事务, 也可用于恢复尚未提交的事务.
数据库事务PPT课件
- T1读,T2更新,T1再次读(与第一次读取数据不同)
该类错误中还包括:幻读(phantom row)
- T1读后,T2删除/插入部分记录,T1再读就不同
脏数据(dirty read)
- T1修改写回,T2读,T1回滚,此时T2读数据为脏数据
6
10.1 并发控制概述
丢失修改(lost update) - T2提交的结果覆盖了T1提交的结果
这时T2读到的C为200,与数 据库内容不一致,就是“脏” 数据
10
10.1 并发控制概述
并发控制的主要技术
封锁(Locking) 时间戳(Timestamp) 乐观控制法 多版本并发控制(MVCC)
11
本章目录
10.1 并发控制概述 10.2 封锁 10.3 封锁协议 10.4 活锁和死锁 10.5 并发调度的可串行性 10.6 两段锁协议 10.7 封锁的粒度 11.8 小结
7
10.1 并发控制概述
不可重复读(non-repeatable read) - T1读,T2更新,T1再次读(与第一次读取数据不同)
T1读取B=100进行运算 T2读取同一数据B,对其进
行修改后将B=200写回数据 库 T1为了对读取值校对重读B, B已为200,与第一次读取值 不一致
8
10.1 并发控制概述
幻读(phantom row) - T1读后,T2删除/插入部分记录,T1再读就不同
9
10.1 并发控制概述
脏数据(dirty read) - T1修改写回,T2读,T1回滚,此时T2读数据为脏数据
T1将C值修改为200, T2读 到C为200
T1由于某种原因撤销,其修 改作废, C恢复原值100
该类错误中还包括:幻读(phantom row)
- T1读后,T2删除/插入部分记录,T1再读就不同
脏数据(dirty read)
- T1修改写回,T2读,T1回滚,此时T2读数据为脏数据
6
10.1 并发控制概述
丢失修改(lost update) - T2提交的结果覆盖了T1提交的结果
这时T2读到的C为200,与数 据库内容不一致,就是“脏” 数据
10
10.1 并发控制概述
并发控制的主要技术
封锁(Locking) 时间戳(Timestamp) 乐观控制法 多版本并发控制(MVCC)
11
本章目录
10.1 并发控制概述 10.2 封锁 10.3 封锁协议 10.4 活锁和死锁 10.5 并发调度的可串行性 10.6 两段锁协议 10.7 封锁的粒度 11.8 小结
7
10.1 并发控制概述
不可重复读(non-repeatable read) - T1读,T2更新,T1再次读(与第一次读取数据不同)
T1读取B=100进行运算 T2读取同一数据B,对其进
行修改后将B=200写回数据 库 T1为了对读取值校对重读B, B已为200,与第一次读取值 不一致
8
10.1 并发控制概述
幻读(phantom row) - T1读后,T2删除/插入部分记录,T1再读就不同
9
10.1 并发控制概述
脏数据(dirty read) - T1修改写回,T2读,T1回滚,此时T2读数据为脏数据
T1将C值修改为200, T2读 到C为200
T1由于某种原因撤销,其修 改作废, C恢复原值100
数据库事务ppt课件
事务故障的常见原因
输入数据有误
运算溢出
违反了某些完整性限制
某些应用程序出错
并行事务发生死锁
。。。。
.
事务故障的恢复
发生事务故障时,夭折的事务可能已把 对数据库的部分修改写回磁盘
事务故障的恢复:撤消事务(UNDO) 强行回滚(ROLLBACK)该事务 清除该事务对数据库的所有修改,使得
硬件故障使存储在外存中的数据部分丢 失或全部丢失
介质故障比前两类故障的可能性小得多, 但破坏性大得多
.
介质故障的常见原因
硬件故障 磁盘损坏 磁头碰撞
操作系统的某种潜在错误 瞬时强磁场干扰
.
介质故障的恢复
装入数据库发生介质故障前某个时刻的 数据副本
重做自此时始的所有成功事务,将这些 事务已提交的结果重新记入数据库
.
系统故障的恢复
清除尚未完成的事务对数据库的所有修改 系统重新启动时,恢复程序要强行撤消 (UNDO)所有未完成事务
将缓冲区中已完成事务提交的结果写入数据库 系统重新启动时,恢复程序需要重做 (REDO)所有已提交的事务
.
7.3 故障的种类 事务故障 系统故障 介质故障
.
三、介质故障
A
B
A=A-1
B=B+1
这两个操作要么全做,要么全不做
全做或者全不做,数据库都处于一致性状态。
如果只做一个操作,数据库就处于不一致性状态。
.
3. 隔离性
对并发执行而言 一个事务的执行不能被其他事务干扰 一个事务内部的操作及使用的数据对其他并发
事务是隔离的 并发执行的各个事务之间不能互相干扰
.
第七章 数据库恢复技术
7.1 事务的基本概念 7.2 数据库恢复概述 7.3 故障的种类 7.4 恢复的实现技术 7.5 恢复策略 7.6 具有检查点的恢复技术 7.7 数据库镜像 7.8 Oracle的恢复技术 7.9 小结
8.1事务-PPT数据库系统概论经典课件
8.2 故障的类型
3、介质故障及其原因
硬件故障使存储在外存中的数据部分丢失或全部丢失。 - 硬件
介质故障的恢复,可以采取装入数据库发生介质故障前某个时刻的数据副本,然后 重做故障开始时的所有成功事务,将这些事务已提交的结果重新记入数据库。
8.2 故障的类型
知 识
第八章 数据库恢复技术
点
1 事务
2 故障的类型 3 恢复的实现技术
4 故障的恢复策略
8.2 故障的类型 1、事务内部故障
某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了。
可预期的事务内部故障 非预期的事务内部故障
8.2 故障的类型
1、事务内部故障
例:银行转账事务
此事务故障通过事务程序本身发 现
一个出口
Commit;}
8.2 故障的类型
1、事务内部故障
- 非预期的事务内部故障
运算溢出 并行事务发生死锁 违反了某些完整性限制 某些应用程序出错
数据库的恢复程序模块要在不影响其它事务运行的情况下强行回滚(ROLLBACK)该事务 , 即撤消该事务已经做出的任何对数据库的修改,使得该事务好像根本没有启动一样。 这类 恢复操作称为事务撤消(UNDO)。
8.2 故障的类型
2、系统故障及其原因
造成整个系统的正常运行突然停止的任何事件,使得系统要重新启动。
特定类型的硬件错误(如CPU故障) 操作系统故障 DBMS代码错误 突然停电 为保证数据一致性,数据库恢复子系统必须在系统重新启动时让所有非正常终止的 事务回滚,强行撤消(UNDO)所有未完成事务。重做(REDO)所有已提交的事务, 以将数据库真正恢复到一致状态。
Begin Transaction 读账户甲的余额Balance; Balance=Balance-Amount If (Balance<0)Then
数据库事务管理的详细讲解课件
数据库事务管理的详细讲解课件
• 数据库事务管理概述 • 数据库事务处理的核心概念 • 数据库事务处理的实现方式 • 数据库事务处理的优化策略 • 数据库事务处理的实际应用案例 • 总结与展望
01
数据库事务管理概述
定义与特点
定义
数据库事务是指一个或一组SQL 语句的逻辑单元,可以保证这组 SQL语句在执行时,其执行结果 的一致性和完整性。
06
总结与展望
数据库事务处理的重要性和影响
保证数据一致性
数据库事务处理能够确保数据的 完整性和一致性,避免数据的不 一致性对业务逻辑和数据质量的
影响。
提高系统性能
通过数据库事务处理,可以优化数 据访问和修改的效率,提高系统的 性能和响应速度。
增强系统可靠性
数据库事务处理能够保证数据的可 靠性和安全性,避免数据丢失或被 非法篡改。
详细描述
银行转账事务通常涉及两个或多个账户之间 的资金转移。当用户从账户A向账户B转账 时,需要执行一系列操作,包括从账户A扣 除资金、向账户B添加资金以及记录交易详 情。这些操作需要作为一个单一的事务来执 行,以确保转账过程的完整性和一致性。如 果在转账过程中出现任何问题,应该回滚事 务,以避免数据不一致的情况。
规则
规则是定义在数据库表上的约束条件,用于限制对表的访问和操作。规则可以用于确保数据的完整性和一致性, 例如在更新或删除数据时强制执行一些条件。
数据库连接池与负载均衡
数据库连接池
数据库连接池是一种管理数据库连接的技术,它可以在应用程序启动时预先创建一组数据库连接,并 在需要时从连接池中获取连接。这种方法可以提高应用程序的性能和响应速度,因为创建和关闭数据 库连接是一项开销较大的执行单元,具有原子性 、一致性、隔离性和持久性。
• 数据库事务管理概述 • 数据库事务处理的核心概念 • 数据库事务处理的实现方式 • 数据库事务处理的优化策略 • 数据库事务处理的实际应用案例 • 总结与展望
01
数据库事务管理概述
定义与特点
定义
数据库事务是指一个或一组SQL 语句的逻辑单元,可以保证这组 SQL语句在执行时,其执行结果 的一致性和完整性。
06
总结与展望
数据库事务处理的重要性和影响
保证数据一致性
数据库事务处理能够确保数据的 完整性和一致性,避免数据的不 一致性对业务逻辑和数据质量的
影响。
提高系统性能
通过数据库事务处理,可以优化数 据访问和修改的效率,提高系统的 性能和响应速度。
增强系统可靠性
数据库事务处理能够保证数据的可 靠性和安全性,避免数据丢失或被 非法篡改。
详细描述
银行转账事务通常涉及两个或多个账户之间 的资金转移。当用户从账户A向账户B转账 时,需要执行一系列操作,包括从账户A扣 除资金、向账户B添加资金以及记录交易详 情。这些操作需要作为一个单一的事务来执 行,以确保转账过程的完整性和一致性。如 果在转账过程中出现任何问题,应该回滚事 务,以避免数据不一致的情况。
规则
规则是定义在数据库表上的约束条件,用于限制对表的访问和操作。规则可以用于确保数据的完整性和一致性, 例如在更新或删除数据时强制执行一些条件。
数据库连接池与负载均衡
数据库连接池
数据库连接池是一种管理数据库连接的技术,它可以在应用程序启动时预先创建一组数据库连接,并 在需要时从连接池中获取连接。这种方法可以提高应用程序的性能和响应速度,因为创建和关闭数据 库连接是一项开销较大的执行单元,具有原子性 、一致性、隔离性和持久性。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
冲突操作是指不同的事务对同一个数据的”读—写”操作 和“写—写”操作,其他操作时不冲突的。不同事务的冲突操 作和同一事务的两个操作时不能交换的。
例 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)
排它锁和共享锁 封锁协议 活锁和死锁
1)排它锁和共享锁
排它锁和共享锁是最基本的封锁方式。 如果事务 T 对数据对象 Y 加上了排它锁(记为
X 锁),那么 T 既可以读取 Y ,也可以更新 Y 。 如果事务 T 对数据对象 Y 加上了共享锁(记为 S 锁),那么 T 可以读取 Y,但不能更新 Y。
事务的活动状态
8.1.4 SQL对事务管理的支持
标准SQL规定事务的开始一般是隐含的,而事 务的结束一般使用COMMIT TRANSACTION ROLLBACK TRANSACTION 语句。其中 ,COMMIT TRANSACTION 表示提交事务,执 行该语句后,事务对数据库的更新结果将被写 入物理磁盘数据库;而S 将撤消事务对数据库所作的全部操 作,就像事务没有被执行一样。
一致性(Consistency) 事务的隔离执行必须保证数据库的一致性 事务开始前,数据库处于一致性的状态;事务结 束后,数据库必须仍处于一致性状态 数据库的一致性状态由用户来负责,由并发控制 机制实现 如银行转帐,转帐前后两个帐户金额之和应保持 不变(意大利香肠)
事务概念
隔离性(Isolation) 系统必须保证事务不受其它并发执行事务的影响 对任何一对事务T1,T2,在T1看来,T2要么在T1开 始之前已经结束,要么在T1完成之后再开始执行 隔离性通过并发控制机制实现
8.2 并发控制与封锁
8.2.1 并发操作与数据的不一致性
并发操作可能带来的数据不一致性情况 有三种 :
1.丢失修改 2.读过时数据 3.读“脏”数据
8.2.2封锁
封锁就是事务 T 在对某个数据对象如关系、元组 等进行查询或更新操作以前 ,应先向系统发出对该数据 对象进行加锁的请求,否则就不可以进行相应的操作,而 事务在获得了对该数据对象的锁以后,其他的事务就不 能查询或更新此数据对象,直到相应的锁被释放为止。
R2(A)W2(A) 与 R1(B)W1(B)这两组操作操作的对象不 是同一对象,因此不是冲突操作,故把R2(A)W2(A) 与 R1(B)W1(B)交换得到:
S2= R1(A)W1(A)R1(B)W1(B) R2(A)W2(A)R2(B)W2(B)
S2等价于一个串行调度T1T2,所以S1是冲突可串行化 调度。
注意:冲突可串行化调度是可串行化调度的充分条件 ,不是必要条件。还有不满足冲突可串行化条件的可 串行化调度。
8.1.3 事务基本操作与活动状态
1.事务操作的组成 事务操作可以看做若干部分组成 (1)事务开始(BEGIN TRANSACTION):
事务开始执行; (2)事务读写操作(READ/WRITE
普通高等教育“十一五”国家级规划教材
数据库系统原理
SHUJUKU XITONG YUANLI (第二版)
陆慧娟 高波涌 何灵敏编著 中国电力出版社
An Introduction to Database Systems
1 / 70
第8章 数据库事务管理
本章内容概述
8.1事务与事务管理 8.2并发控制与封锁机制 8.3数据库恢复
8.1事务与事务管理
8.1.1 事务的概念 事务定义
事务是构成数据库处理逻辑单元的可执行程序, 由用户定义的一组操作序列(包括插入、删除、 修改或检索等操作)组成,序列中的操作要么全 做,要么全不做,是一个不可分割的工作单位。
事务概念
事务特性(ACID)
原子性(Atomicity) 事务中包含的所有操作要么全做,要么全不做 原子性由恢复机制实现
持续性(Durability) 一个事务一旦提交之后,它对数据库的影响必须是 永久的 系统发生故障不能改变事务的持久性 持续性通过恢复机制实现
8.1.2可串行性理论
对于调度S中的每个事务T,如果T中所有的操作在调度中都 是连续执行的,那么就称调度S是串行的;否则调度S是非串 行的。
串行调度中不会发生不同事务的交替操作。 如果具有n个事务的调度S等价于某个具有相同n个事务的串 行调度,那么S就是可串行化调度。
二级封锁协议可以防止丢失更新问题,还可 以防止未提交依赖问题,但却不能防止不一 致性分析问题。
(3)三级封锁协议
三级封锁协议规定事务 T 在更新数据对象 前,必须对数据对象加 X 锁,且直到事务 T 结束时才可以释放该锁,还规定事务 T 在读取数据对象以前必须先对其加 S 锁, 该 S 锁也必须在事务 T 结束时才可释放。
一次加锁锁住的数据单位大小被称为锁的粒度( granularity),如果数据单位比较小,我们说锁是细 (fine)粒度的,否则就说锁是粗(coarse)粒度的 。
2)封锁协议
一级封锁协议 二级封锁协议 三级封锁协议
封锁协议就是在对数据对象加锁、持锁和 释放锁时所约定的一些规则。不同的封锁规 则形成了不同的封锁协议
(1)一级封锁协议
一级封锁协议规定事务 T 在更新数据对象以前 ,必须对该数据对象加排它锁,并且直到事务 T 结束时才可以释放该锁。
利用一级封锁协议可以防止丢失更新问题的发 生。
(2)二级封锁协议
二级封锁协议规定事务 T 在更新数据对象以 前必须对数据对象加 X 锁,且直到事务 T 结束时才可以释放该锁,还规定事务 T 在读 取数据对象以前必须先对其加 S 锁,读完后 即可释放 S 锁。
TRANSACTION):事务进行数据操作
8.1.3 事务基本操作与活动状态
(3)事务提交(COMMIT TRANSACTION ): 事务完成所有数据操作,同时保存操作 结果,它标志着事务成功完成。
(4)事务回滚(ROLLBACK 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)
排它锁和共享锁 封锁协议 活锁和死锁
1)排它锁和共享锁
排它锁和共享锁是最基本的封锁方式。 如果事务 T 对数据对象 Y 加上了排它锁(记为
X 锁),那么 T 既可以读取 Y ,也可以更新 Y 。 如果事务 T 对数据对象 Y 加上了共享锁(记为 S 锁),那么 T 可以读取 Y,但不能更新 Y。
事务的活动状态
8.1.4 SQL对事务管理的支持
标准SQL规定事务的开始一般是隐含的,而事 务的结束一般使用COMMIT TRANSACTION ROLLBACK TRANSACTION 语句。其中 ,COMMIT TRANSACTION 表示提交事务,执 行该语句后,事务对数据库的更新结果将被写 入物理磁盘数据库;而S 将撤消事务对数据库所作的全部操 作,就像事务没有被执行一样。
一致性(Consistency) 事务的隔离执行必须保证数据库的一致性 事务开始前,数据库处于一致性的状态;事务结 束后,数据库必须仍处于一致性状态 数据库的一致性状态由用户来负责,由并发控制 机制实现 如银行转帐,转帐前后两个帐户金额之和应保持 不变(意大利香肠)
事务概念
隔离性(Isolation) 系统必须保证事务不受其它并发执行事务的影响 对任何一对事务T1,T2,在T1看来,T2要么在T1开 始之前已经结束,要么在T1完成之后再开始执行 隔离性通过并发控制机制实现
8.2 并发控制与封锁
8.2.1 并发操作与数据的不一致性
并发操作可能带来的数据不一致性情况 有三种 :
1.丢失修改 2.读过时数据 3.读“脏”数据
8.2.2封锁
封锁就是事务 T 在对某个数据对象如关系、元组 等进行查询或更新操作以前 ,应先向系统发出对该数据 对象进行加锁的请求,否则就不可以进行相应的操作,而 事务在获得了对该数据对象的锁以后,其他的事务就不 能查询或更新此数据对象,直到相应的锁被释放为止。
R2(A)W2(A) 与 R1(B)W1(B)这两组操作操作的对象不 是同一对象,因此不是冲突操作,故把R2(A)W2(A) 与 R1(B)W1(B)交换得到:
S2= R1(A)W1(A)R1(B)W1(B) R2(A)W2(A)R2(B)W2(B)
S2等价于一个串行调度T1T2,所以S1是冲突可串行化 调度。
注意:冲突可串行化调度是可串行化调度的充分条件 ,不是必要条件。还有不满足冲突可串行化条件的可 串行化调度。
8.1.3 事务基本操作与活动状态
1.事务操作的组成 事务操作可以看做若干部分组成 (1)事务开始(BEGIN TRANSACTION):
事务开始执行; (2)事务读写操作(READ/WRITE
普通高等教育“十一五”国家级规划教材
数据库系统原理
SHUJUKU XITONG YUANLI (第二版)
陆慧娟 高波涌 何灵敏编著 中国电力出版社
An Introduction to Database Systems
1 / 70
第8章 数据库事务管理
本章内容概述
8.1事务与事务管理 8.2并发控制与封锁机制 8.3数据库恢复
8.1事务与事务管理
8.1.1 事务的概念 事务定义
事务是构成数据库处理逻辑单元的可执行程序, 由用户定义的一组操作序列(包括插入、删除、 修改或检索等操作)组成,序列中的操作要么全 做,要么全不做,是一个不可分割的工作单位。
事务概念
事务特性(ACID)
原子性(Atomicity) 事务中包含的所有操作要么全做,要么全不做 原子性由恢复机制实现
持续性(Durability) 一个事务一旦提交之后,它对数据库的影响必须是 永久的 系统发生故障不能改变事务的持久性 持续性通过恢复机制实现
8.1.2可串行性理论
对于调度S中的每个事务T,如果T中所有的操作在调度中都 是连续执行的,那么就称调度S是串行的;否则调度S是非串 行的。
串行调度中不会发生不同事务的交替操作。 如果具有n个事务的调度S等价于某个具有相同n个事务的串 行调度,那么S就是可串行化调度。
二级封锁协议可以防止丢失更新问题,还可 以防止未提交依赖问题,但却不能防止不一 致性分析问题。
(3)三级封锁协议
三级封锁协议规定事务 T 在更新数据对象 前,必须对数据对象加 X 锁,且直到事务 T 结束时才可以释放该锁,还规定事务 T 在读取数据对象以前必须先对其加 S 锁, 该 S 锁也必须在事务 T 结束时才可释放。
一次加锁锁住的数据单位大小被称为锁的粒度( granularity),如果数据单位比较小,我们说锁是细 (fine)粒度的,否则就说锁是粗(coarse)粒度的 。
2)封锁协议
一级封锁协议 二级封锁协议 三级封锁协议
封锁协议就是在对数据对象加锁、持锁和 释放锁时所约定的一些规则。不同的封锁规 则形成了不同的封锁协议
(1)一级封锁协议
一级封锁协议规定事务 T 在更新数据对象以前 ,必须对该数据对象加排它锁,并且直到事务 T 结束时才可以释放该锁。
利用一级封锁协议可以防止丢失更新问题的发 生。
(2)二级封锁协议
二级封锁协议规定事务 T 在更新数据对象以 前必须对数据对象加 X 锁,且直到事务 T 结束时才可以释放该锁,还规定事务 T 在读 取数据对象以前必须先对其加 S 锁,读完后 即可释放 S 锁。
TRANSACTION):事务进行数据操作
8.1.3 事务基本操作与活动状态
(3)事务提交(COMMIT TRANSACTION ): 事务完成所有数据操作,同时保存操作 结果,它标志着事务成功完成。
(4)事务回滚(ROLLBACK TRANSACTION ):事务未完成所有数据 操作,重新返回到事务开始状态,标志着 事务的撤销。