Transaction
-
事务(Transaction)是用户定义的一个数据库操 作序列
这些操作要么全做, 要么全不做, 是 一个不可分割的工作单位, 。 -
事务和程序是两个概念
- 在关系数据库中
一个事务可以是一条SQL语句, 一组SQL语句或整个程序, - 一个程序通常包含多个事务
- 在关系数据库中
-
事务是恢复和并发控制的基本单位
事物的定义
显示地定义
BEGIN TRANSACTION
<SQL STATEMENT 1>
<SQL STATEMENT 2>
...
COMMIT
BEGIN TRANSACTION
<SQL STATEMENT 1>
<SQL STATEMENT 2>
...
ROLLBACK
这里 COMMIT
和 ROLLBACK
是显示地终止一个事物的两条指令
当用户没有显式地定义事务时, 数据库管理系统按缺省规定自动划分事务
-
事务正常结束
-
提交事务的所有操作
读+更新( ) -
事务中所有对数据库的更新写回到磁盘上的物理数据库中
-
事务异常终止
-
事务运行的过程中发生了故障
不能继续执行, -
系统将事务中对数据库的所有已完成的操作全部撤销
-
事务滚回到开始时的状态
-
ACID特性
- Atomicity: 事务是数据库的逻辑工作单位 —— 事务中包括的诸操作要么都做, 要么都不做
- Consistency: 数据库中只包含成功事务提交的结果 (也就是说失败的事物必须rollback)
- Isolation: 一个事务的执行不能被其他事务干扰, 并发执行的各个事务之间不能互相干扰
- Durability: 一个事务一旦提交
它对数据库中数据的改变就应该是永久性的. 接下来的其他操作或故障不应该对其执行结果有任何影响,
-
事务的控制语句
事务的提交(commit)与回滚(rollback):
Fault and Database Recovery
故障 (Fault) 的种类
- 事务内部的故障 (事务故障)
- 系统故障
- 介质故障
- 计算机病毒
各类故障
- 数据库本身被破坏
- 数据库没有被破坏, 但数据可能不正确, 这是由于事务的运行被非正常终止造成的.
事务内部更多的故障是非预期的, 是不能由应用程序处理的.
- 运算溢出
- 并发事务发生死锁而被选中撤销该事务
- 违反了某些完整性限制而被终止等
事务故障仅指这类非预期的故障
事务故障的恢复
- 强行回滚
ROLLBACK( 该事务) - 撤销该事务已经作出的任何对数据库的修改
使得该事务像根本没有启动一样,
系统故障, 称为软故障, 是指造成系统停止运转的任何事件 (特定类型的硬件错误
-
整个系统的正常运行突然被破坏
-
所有正在运行的事务都非正常终止
-
不破坏数据库
-
内存中数据库缓冲区的信息全部丢失
-
发生系统故障时
一些尚未完成的事务的结果可能已送 入物理数据库, 造成数据库可能处于不正确状态, 。 - 恢复策略
系统重新启动时: 恢复程序让所有非正常终止的 事务回滚, 强行撤消, UNDO( 所有未完成事务)
- 恢复策略
-
发生系统故障时
有些已完成的事务可能有一部分甚至 全部留在缓冲区, 尚未写回到磁盘上的物理数据库中, 系统故障使得这些事务对数据库的修改部分或全部丢失, - 恢复策略
系统重新启动时: 恢复程序需要重做, REDO( 所有已提交的事务)
- 恢复策略
介质故障
- 磁盘损坏
- 磁头碰撞
- 瞬时强磁场干扰
介质故障破坏数据库或部分数据库
介质故障比前两类故障的可能性小得多
病毒是数据库的主要威胁
恢复操作的基本原理
恢复的实现技术
恢复机制涉及的关键问题:
- 如何建立冗余数据
数据转储( 登记日志文件, ) - 如何利用这些冗余数据实施数据库恢复
Data Dumping & Logs
数据转储
转储 (dumping) 是指数据库管理员定期地将整个数据库复制到 磁带
转储方法:
- 静态: 在系统中无运行事务时进行的转储操作
- 动态: 转储操作与用户事务并发进行
海量转储: 每次转储全部数据库
增量转储: 只转储上次转储后更新过的数据
日志
日志文件的格式
- 以记录为单位的日志文件
- 以数据块为单位的日志文件
用途
- 进行事务故障恢复
- 进行系统故障恢复
- 协助后备副本进行介质故障恢复
Schedule
-
串行调度(serial schedule)
-
可串行化调度(Serializability Schedule)
-
冲突 与 冲突可串行化调度
-
串行调度/可串行化调度/冲突可串行化调度 三者之间的关系
Two-Phase Locking
-
封锁
-
排它锁的作用与申请规则
-
共享锁的作用与申请规则
-
-
两阶段封锁协议
-
死锁的定义
Logs
-
UNDO日志的内容
记载规则和作用, -
REDO日志的内容
记载规则和作用, -
UNDO/REDO日志的内容
记载规则和作用,
恢复策略
- 事务故障
UNDO: - 系统故障
UNDO and REDO: - 介质故障
重装数据库: UNDO and REDO,