当前位置首页 > 计算机 > 数据库/结构与算法
搜柄,搜必应! 快速导航 | 使用教程  [会员中心]

《数据库事务管理》PPT课件.ppt

文档格式:PPT| 87 页|大小 428.60KB|积分 15|2021-06-01 发布|文档ID:22826600
第1页
下载文档到电脑,查找使用更方便 还剩页未读,继续阅读>>
1 / 87
此文档下载收益归作者所有 下载文档
  • 版权提示
  • 文本预览
  • 常见问题
  • 数 据 库 系 统 基 础 教 程 ( 第 2版 )叶 小 平 汤 庸 汤 娜 潘 明 编 著普 通 高 等 教 育 “ 十 一 五 ” 国 家 级 规 划 教 材清 华 大 学 出 版 社 1.事 务 概 念 事 务 是 DBMS中 操 作 的 基 本 执 行 单 位 , 事 务 本 身就 是 构 成 单 一 逻 辑 工 作 单 元 的 数 据 库 操 作 的 有 限序 列 操 作 序 列 中 的 操 作 要 么 全 做 , 要 么 全 不 做 ,整 个 序 列 是 一 个 不 可 分 割 的 操 作 单 位 第 7章 数 据 库 事 务 管 理7.1事 务 与 事 务 管 理7.1.1事 务 概 念 与 ACID性 质 : 概 念 2 事 务 性 质 ( ACID ) ( 1) 原 子 性 ( Atomicity)一 个 事 务 对 于 数 据 所 有 操 作 是 不 可 分 割 整 体 , 这 些 操 作 要么 全 执 行 , 要 么 全 不 执 行 原 子 性 是 事 务 概 念 本 质 体 现 和 基 本 要 求 7.1.1 事 务 概 念 与 ACID性 质 2 事 务 性 质 ( ACID )( 2) 一 致 性 ( Consistency)数 据 库 中 数 据 不 因 事 务 执 行 而 受 到 破 坏 ,事 务 执 行 结 果 应 使 数 据 库 由 一 种 一 致 性 达到 另 一 种 新 的 一 致 性 。

    一 致 性 意 义 在 于 保 证 数 据 完 整 性 7.1.1 事 务 概 念 与 ACID性 质 ( 3) 隔 离 性 ( Isolation) 事 务 并 发 执 行 与 这 些 事 务 单 独 执 行 的 结 果一 样 在 多 事 务 并 发 执 行 时 , 各 事 务 不 必关 心 其 它 事 务 的 执 行 , 如 同 在 单 个 用 户 环境 下 执 行 一 样 隔 离 性 意 义 在 于 是 事 务 并 发 控 制 技 术 基 础 7.1.1 事 务 概 念 与 ACID性 质 ( 4) 持 久 性 ( Durability) 事 务 对 数 据 的 更 新 应 永 久 地 反 映 在 数 据 库中 事 务 一 旦 完 成 全 部 操 作 后 , 它 对 数 据库 所 有 更 新 结 果 将 永 久 保 留 , 即 使 以 后 发生 故 障 也 应 保 留 相 应 结 果 持 久 性 意 义 在 于 保 证 数 据 的 故 障 恢 复 7.1.1 事 务 概 念 与 ACID性 质 7.1.1 事 务 概 念 与 ACID性 质 1. SQL中 的 事 务 处 理 语 句 事 务 开 始 语 句 : START TRANSACTION语 句 事 务 提 交 语 句 : COMMIT语 句 存 储 点 语 句 : SAVEPOINT语 句 事 务 回 滚 语 句 : ROLLBACK语 句7.1.2 SQL对 事 务 管 理 的 支 持 2. 事 务 提 交 与 回 滚 基 本 方 式 显 式 方 式 : 通 过 COMMIT和 ROLLBACK语 句 明显 指 出 提 交 或 回 滚 有 关 事 务 。

    隐 式 方 式 : CREATE TABLE、 DROP TABLE、CREATE VIEW, CREATE INDEX等 创 建 语 句 在执 行 后 即 刻 导 致 相 关 事 务 的 提 交 自 动 方 式 : 定 期 提 交 完 成 的 事 务 7.1.2 SQL对 事 务 管 理 的 支 持 3.事 务 内 容 的 两 种 类 型 只 读 型 ( Read Only) 读 写 型 ( Read/Write)7.1.2 SQL对 事 务 管 理 的 支 持 事 务 并 发 执 行 是 数 据 共 享 性 重 要 保 证 , 并发 执 行 应 当 加 以 适 当 控 制 , 否 则 会 出 现 数据 不 一 致 , 破 坏 数 据 库 一 致 性 为 在 并 发执 行 过 程 中 保 持 一 致 性 , 需 应 用 事 务 概 念讨 论 并 发 控 制 技 术 7.2 并 发 控 制 技 术 1.串 行 执 行 与 并 发 执 行 在 事 务 活 动 过 程 中 , 只 有 当 一 个 事 务 完 全 结 束 ,另 一 事 务 才 开 始 执 行 , 这 种 执 行 方 式 称 为 事 务的 串 行 执 行 或 串 行 访 问 。

    在 事 务 执 行 过 程 中 , 如 果 DBMS同 时 接 纳 多 个事 务 , 使 得 事 务 在 时 间 上 可 以 重 叠 执 行 , 这 种执 行 方 式 称 为 事 务 的 并 发 执 行 或 并 发 访 问7.2.1 事 务 的 并 发 执 行 两 类 并 发 执 行 方 式 交 叉 并 发 执 行 : 在 单 CPU系 统 中 , 同 一 时 间 只能 有 一 个 事 务 占 用 CPU, 实 际 情 形 是 各 个 并 发 执行 的 事 务 交 叉 使 用 CPU, 这 种 并 发 方 式 称 为 交 叉并 发 执 行 或 分 时 并 发 执 行 同 时 并 发 执 行 : 在 多 CPU系 统 中 , 多 个 并 发 执行 的 事 务 可 以 同 时 占 用 系 统 中 的 CPU, 这 种 方 式称 为 同 时 并 发 执 行 7.2.1 事 务 的 并 发 执 行 2.并 发 执 行 的 优 势 改 善 系 统 资 源 利 用 率 改 善 短 事 务 响 应 时 间 7.2.1 事 务 的 并 发 执 行 在 同 一 时 刻 , 多 个 用 户 存 取 同 一 数 据 , 由于 使 用 时 间 相 互 重 叠 和 使 用 方 式 彼 此 影 响 ,如 对 并 发 操 作 不 加 以 适 当 控 制 , 就 可 能 引发 数 据 不 一 致 问 题 , 导 致 错 误 结 果 , 使 数据 库 由 于 并 发 操 作 错 误 而 出 现 故 障 。

    7.2.2 并 发 执 行 引 发 不 一 致 ( 1) 丢 失 更 新 丢 失 更 新 是 指 两 个 事 务 T1和 T2从 数 据 库 读取 同 一 数 据 并 进 行 更 新 , 其 中 事 务 T2提 交的 更 新 改 结 果 破 坏 了 事 务 T1提 交 的 更 新 结果 , 导 致 了 事 务 T1的 更 新 被 丢 失 丢 失 更新 是 由 于 两 个 事 务 对 同 一 数 据 并 发 地 进 行写 入 操 作 所 引 起 的 , 因 而 称 为 写 -写 冲 突 7.2.2 并 发 执 行 引 发 不 一 致 ( 2) 读 “ 脏 ” 数 据 读 “ 脏 ” 数 据 是 指 事 务 T1将 数 据 a更 新 成 数 据 b,然 后 将 其 写 入 磁 盘 ; 此 后 事 务 T2读 取 该 更 新 后 的数 据 , 即 数 据 b; 接 下 来 T1因 故 被 撤 销 , 使 得 数据 b恢 复 到 了 原 值 a 这 时 , T2得 到 的 数 据 就 与 数据 库 内 的 数 据 不 一 致 这 种 不 一 致 或 者 不 存 在 的数 据 通 常 就 称 为 “ 脏 ” 数 据 。

    7.2.2 并 发 执 行 引 发 不 一 致 ( 3) 不 可 重 复 读 取 不 可 重 复 读 是 指 当 事 务 T1读 取 数 据 a后 , 事务 T2进 行 读 取 并 进 行 更 新 操 作 , 使 得 T1再读 取 a进 行 校 验 时 , 发 现 前 后 两 次 读 取 值 发生 了 变 化 , 从 而 无 法 再 读 取 前 一 次 读 取 的结 果 7.2.2 并 发 执 行 引 发 不 一 致 不 可 重 复 读 包 括 3种 情 形 事 务 T1读 取 某 一 数 据 后 , 事 务 T2对 其 进 行 了 修 改 , 当事 务 T1再 次 读 该 数 据 时 , 得 到 与 前 一 次 不 同 的 值 图 8-5中 ( c) 说 明 的 就 是 这 种 情 况 事 务 T1按 一 定 条 件 从 数 据 库 中 读 取 某 些 数 据 记 录 后 , 事务 T2删 除 了 其 中 的 部 分 记 录 , 当 事 务 T1再 次 按 照 相 同 条件 读 取 该 数 据 时 , 发 现 某 些 记 录 已 经 不 存 在 了 事 务 T1按 一 定 条 件 从 数 据 库 中 读 取 某 些 数 据 记 录 后 , 事务 T2插 入 了 一 些 记 录 , 当 事 务 T1再 次 按 照 统 一 条 件 读 取数 据 , 就 会 发 现 多 出 了 某 些 数 据 7.2.2 并 发 执 行 引 发 不 一 致 t T1 T2 t T1 T2 t T1 T2 1 Read:a=10 2 Read:a=10 1 Read:b=100 b b*2 Write:b=200 1 Read:c=60 Read:d=100 e c+d=160 3 a a-1 Write:a=9 2 Read:b=200 2 Read:d=100 d d*2 Write:d=200 4 a a-1 Write:a=9 3 ROLLBACK b恢 复 为 100 3 Read:c=60 Read:d=200 e c+d=260 (校 验 不 一 致 ) ( a) 修 改 丢 失 ( b) 读 脏 数 据 ( c) 不 可 重 复 读 取 7.2.2 并 发 执 行 引 发 不 一 致 1.事 务 并 发 执 行 的 调 度 在 数 据 库 应 用 中 , 经 常 存 在 多 个 事 务 执 行 过 程 。

    由 于 每 个 事 务 含 有 若 干 有 序 的 操 作 , 当 这 些 事 务处 于 并 发 状 态 时 , DBMS就 必 须 对 这 些 操 作 的 执行 顺 序 做 出 安 排 , 即 需 要 进 行 “ 调 度 ” 如 果 数 据 库 在 某 时 刻 存 在 并 发 执 行 的 n个 事 务 之集 , 对 这 n个 事 务 所 有 操 作 一 个 顺 序 安 排 称 为 对该 并 发 执 行 事 务 集 的 一 个 调 度 ( Schedule) 7.2.3 并 发 执 行 正 确 性 准 则 2.并 发 操 作 正 确 性 准 则 可 串 行 化 准 则 当 数 据 库 有 多 个 事 务 进 行 操 作 时 , 如 果 对数 据 库 进 行 的 操 作 以 事 务 为 单 位 , 多 个 事务 按 顺 序 依 次 执 行 , 即 一 个 事 务 执 行 完 全结 束 之 后 , 另 一 个 事 务 才 开 始 , 这 种 执 行方 式 就 是 串 行 调 度 7.2.3 并 发 执 行 正 确 性 准 则 对 于 一 个 并 发 事 务 集 来 说 , 如 果 一 种 调 度 与 一 种串 行 调 度 等 价 , 则 称 该 调 度 可 串 行 化 , 这 种 执 行称 为 并 发 事 务 的 可 串 行 化 , 采 用 相 应 技 术 称 之 为并 发 控 制 ( Concurrent Control) 技 术 。

    DBMS以 可 串 行 化 作 为 并 发 控 制 正 确 性 准 则 , 其 中 并 发控 制 机 构 的 任 务 就 是 调 度 事 务 的 并 发 执 行 , 使 得这 个 事 务 等 价 于 一 个 串 行 调 度 7.2.3 并 发 执 行 正 确 性 准 则 串 行 执 行 、 并 发 执 行 ( 不 正 确 ) 以 及 并 发执 行 可 以 串 行 化 ( 正 确 ) 的 例 子 例 7-1 以 银 行 转 账 为 例 事 务 T1从 账 号 A( 初 值 为 20000) 转 10000到 账 号 B( 初 值为 20000) , 事 务 T2从 账 号 A转 10%的 款 项到 账 号 B, T1和 T2具 体 执 行 过 程 如 下 :7.2.3 并 发 执 行 正 确 性 准 则 t T1 T2 t T1 T2 1 Read(A) 1 Read(A) 2 A:=A-10000 2 Tem p:=A*0.1 3 Write(A) 3 A:=A-Tem p 4 Read(B) 4 Write(A) 5 B:=B+10000 5 Read(B) 6 Write(B) 6 B:=B+Tem p 7 Read(A) 7 Write(B) 8 Tem p:=A*0.1 8 Read(A) 9 A:=A-Tem p 9 A:=A-10000 10 Write(A) 10 Write(A) 11 Read(B) 11 Read(B) 12 B:=B+Tem p 12 B:=B+10000 13 Write(B) 13 Write(B) a) 串 行 调 度 ( 1) b) 串 行 调 度 ( 2) 7.2.3 并 发 执 行 正 确 性 准 则 在 串 行 调 度 ( 1) 中 , 执 行 T1后 的 数 据A=10000, B=30000。

    T2读 取 这 样 的 数 据A, B, 得 到 Temp=A*0.1=1000, A: =A-Temp=9000, B: =B+Temp=31000 最终 , 数 据 库 写 入 数 据 A=9000, B=310007.2.3 并 发 执 行 正 确 性 准 则 在 串 行 调 度 ( 2) 中 , 执 行 T2后 的 数 据Temp=A*0.1=2000, A: =A-Temp=18000; B:=B+Temp=22000 T1读 取 这 样 的 数 据 A和 B, 得到 A: =A-10000=8000, B: =B+10000=32000最 终 数 据 库 写 入 数 据 A=8000, B=32000 下 面 给 出 如 下 图 所 示 的 两 种 并 发 调 度 方 案 7.2.3 并 发 执 行 正 确 性 准 则 t T1 T2 t T1 T2 1 Read(A) 1 Read(A) 2 A:=A-10000 2 A:=A-10000 3 Write(A) 3 Read(A) 4 Read(A) 4 Tem p:=A*0.1 5 Tem p:=A*0.1 5 A:=A-Tem p 6 A:=A-Tem p 6 Wirte(A) 7 Write(A) 7 Read(B) 8 Read(B) 8 Write(A) 9 B:=B+10000 9 Read(B) 10 Write(B) 10 B:=B+10000 11 Read(B) 11 Write(B) 12 B:=B+Tem p 12 B:=B+Tem p 13 Write(B) 13 Write(B) a) 可 串 行 化 调 度 -并 发 执 行 调 度 ( 1) b) 非 串 行 化 调 度 -并 发 执 行 调 度 ( 2) 7.2.3 并 发 执 行 正 确 性 准 则 通 过 并 发 执 行 调 度 ( 1) , 得 到 数 据A=9000, B=31000, 与 先 T1再 T2结 果 相同 , 因 此 调 度 ( 1) 是 可 串 行 化 调 度 。

    通 过并 发 执 行 调 度 ( 2) , 得 到 数 据 A=18000,B=32000, 与 T1再 T2和 先 T2再 T1的 结 果 都不 相 同 , 因 此 调 度 ( 1) 是 非 可 串 行 化 调 度 7.2.3 并 发 执 行 正 确 性 准 则 事 务 并 发 控 制 是 对 多 事 务 并 发 执 行 中 所 有 操 作 按照 正 确 方 式 进 行 调 度 , 避 免 造 成 数 据 不 一 致 性 ,使 得 一 个 用 户 事 务 执 行 不 受 其 他 事 务 干 扰 并 发控 制 技 术 是 采 用 封 锁 机 制 , 其 基 本 思 想 是 如 果 事务 T要 修 改 数 据 A, 在 读 A前 先 封 锁 A, 此 时 , 其他 事 务 不 能 读 和 修 改 A, 直 到 T修 改 并 写 回 A并 解除 对 A封 锁 为 止 7.2.4 并 发 执 行 基 本 技 术 1.封 锁 概 念 当 一 个 事 务 T需 要 对 某 些 数 据 对 象 进 行 操 作 ( 读 /写 ) 时 , 须 向 系 统 提 出 申 请 , 对 其 加 以 封 锁 ; 在获 得 加 锁 后 , 即 具 有 对 此 数 据 一 定 操 作 与 控 制 权限 , 而 其 他 事 务 不 能 对 加 锁 数 据 随 意 操 作 。

    当 事 务 T操 作 完 成 之 后 即 释 放 锁 , 此 后 数 据 即 可为 其 他 事 务 操 作 服 务 7.2.4 并 发 执 行 基 本 技 术 2.两 种 封 锁 类 型 ( 1) 排 它 锁 排 它 锁 ( eXclusive Lock) 又 称 为 写 锁 或 X锁 , 其 含 义 是 : 事 务 T对 数 据 A加 X锁 后 , T可 以 对 加 X锁 的 A进 行 读 写 , 而 其 它 事 务 只有 等 到 T解 除 X锁 之 后 , 才 能 对 A进 行 封 锁和 操 作 ( 包 括 读 写 ) 7.2.4 并 发 执 行 基 本 技 术 ( 2) 共 享 锁 共 享 锁 ( Sharing Lock) 又 称 为 读 锁 或 S锁 其 含 义 是 : 事 务 T对 数 据 A加 S锁 之 后 ,T可 以 读 A但 不 能 写 A; 同 时 其 它 事 务 可 以对 A加 S锁 但 不 能 加 X锁 7.2.4 并 发 执 行 基 本 技 术 7.2.4 并 发 执 行 基 本 技 术 排 它 锁 和 共 享 锁 的 控 制 方 式 可 以 用 图 7-8所 示 的 相 容 矩 阵表 示 。

    其 中 , Y=YES, 表 示 相 容 的 请 求 ; N=NO, 表 示 不相 容 的 请 求 7.2.4 并 发 执 行 基 本 技 术 3. 封 锁 粒 度 逻 辑 粒 度 : 属 性 ( 值 ) , 属 性 ( 值 ) 集 合 ; 元 组 ; 关 系 表 ; 数 据 库 物 理 粒 度 : 物 理 页 面 ; 索 引 7.2.4 并 发 执 行 基 本 技 术 1 三 级 封 锁 协 议 与 数 据 一 致 性 ( 1) 一 级 封 锁 协 议 一 级 封 锁 协 议 的 内 容 是 : 事 务 T在 对 数 据 A写 操 作之 前 , 必 须 对 A加 X锁 ; 保 持 加 锁 状 态 直 到 事 务 结束 ( 包 括 Commit与 Rollback) 方 可 释 放 加 在 A上 的 X锁 以 图 7-5( a) 为 例 , 对 它 做 一 级 封 锁 后 即 可 避 免修 改 丢 失 , 如 图 7-9所 示 7.2.5 封 锁 协 议 t T1 T2 01 Xlock a 02 Read a=10 03 a a-1 Xlock a 04 Write a=9 Wait 05 Commit Wait 06 UnXlock a Wait 07 Get Xlock a 08 Read a=9 09 a a-1 10 Write a=8 11 Commit 12 UnXlock a 7.2.5 封 锁 协 议 ( 2) 二 级 封 锁 协 议 考 虑 下 面 封 锁 方 式 : 事 务 T读 取 数 据 A前 先 对 A加 S锁 , 读完 后 即 释 放 加 在 A上 S锁 。

    此 种 封 锁 方 式 与 一 级 封 锁 协 议 联 合 构 成 二 级 封 锁 协 议 二 级 封 锁 协 议 包 含 一 级 封 锁 协 议 内 容 按 照 二 级 封 锁 协 议 ,事 务 对 数 据 A做 读 、 写 操 作 时 使 用 X锁 , 从 而 防 止 了 丢 失数 据 ; 做 读 操 作 时 使 用 S锁 , 从 而 防 止 了 读 脏 数 据 以 图8-5( b) 为 例 , 对 它 做 二 级 封 锁 , 即 可 防 止 脏 读 , 如 图 8-10所 示 7.2.5 封 锁 协 议 7.2.5 封 锁 协 议 ( 3) 三 级 封 锁 协 议 考 虑 封 锁 方 式 : 事 务 T在 读 数 据 A之 前 须 先对 A加 S锁 , 到 事 务 结 束 释 放 加 在 A上 S锁 上 述 封 锁 方 式 与 一 级 封 锁 协 议 联 合 构 成 三级 封 锁 协 议 7.2.5 封 锁 协 议 按 照 三 级 封 锁 协 议 的 概 念 , 由 于 包 含 一 级 封 锁 协议 , 所 以 防 止 了 丢 失 修 改 ; 同 时 由 于 包 含 了 二 级封 锁 协 议 , 防 止 了 读 脏 数 据 ; 另 外 由 于 在 对 数 据A做 写 时 以 X锁 封 锁 , 做 读 时 以 S锁 封 锁 , 这 两 种锁 都 是 直 到 事 务 结 束 后 才 释 放 , 由 此 就 防 止 不 可重 复 读 。

    所 以 三 级 封 锁 协 议 同 时 防 止 并 发 执 行 中的 3类 问 题 以 图 7-5( c) 为 例 , 对 它 做 三 级 封 锁 ,防 止 了 不 可 重 复 读 , 如 图 7-11所 示 7.2.5 封 锁 协 议 7.2.5 封 锁 协 议 三 级 封 锁 协 议 机 制 总 结 如 图 7-12所 示 , 其 中 , “ +”表 示 具有 该 项 特 征 , “ ”表 示 不 具 有 相 应 特 征 7.2.5 封 锁 协 议 2 两 段 封 锁 协 议 与 可 串 行 化 调 度 由 前 述 可 知 , 实 行 三 级 封 锁 协 议 就 可 以 防止 事 务 并 发 执 行 3类 错 误 发 生 , 但 防 止 错 误发 生 并 不 能 保 证 并 发 调 度 是 可 串 行 化 的 为 了 保 证 调 度 一 定 等 价 于 一 个 串 行 调 度 ,必 须 使 用 其 他 附 加 规 则 来 限 制 封 锁 的 操 作时 机 参 考 下 面 例 子 :7.2.5 封 锁 协 议 例 7-2 设 有 两 个 事 务 T1和 T2, 其 初 始 值 为 :x=20, y=50。

    图 7-13表 示 T1和 T2都 遵 循 了二 级 封 锁 协 议 基 本 要 求 7.2.5 封 锁 协 议 7.2.5 封 锁 协 议 如 果 先 执 行 T1后 执 行 T2得 到 串 行 结 果 为 x=50,y=80; 如 果 先 执 行 T2后 执 行 T1得 到 串 行 结 果x=70, y=50 如 图 7-13所 示 如 果 我 们 再 按 图 8-14所 示 调 度 方 式 进 行 并 发 执 行 , 其 中 T1、 T2满 足二 级 封 锁 协 议 ( 注 意 , 封 锁 协 议 本 身 与 并 行 调 度无 关 ) , 得 到 结 果 为 x=50, y=50, 这 说 明 此 时 调度 不 是 可 串 行 化 的 7.2.5 封 锁 协 议 7.2.5 封 锁 协 议 问 题 出 在 哪 里 呢 ? 按 照 二 级 封 锁 协 议 , 所有 在 事 务 中 申 请 的 X锁 必 须 在 事 务 结 束 后 才能 释 放 , 但 其 S锁 却 可 以 较 早 解 除 一 个 事务 如 果 在 解 除 一 个 封 锁 之 后 , 继 续 获 得 另一 个 封 锁 , 就 有 可 能 出 现 错 误 , 不 能 够 实现 可 串 行 化 。

    7.2.5 封 锁 协 议 在 三 级 封 锁 协 议 中 , 所 有 事 务 执 行 过 程 中 申 请 的锁 必 须 在 事 务 结 束 后 才 能 释 放 , 即 使 说 , 事 务 必须 将 锁 使 用 分 为 申 请 和 释 放 两 个 阶 段 , 扩 展 阶 段 : 申 请 并 获 得 封 锁 在 此 阶 段 中 , 事务 可 以 申 请 其 整 个 执 行 过 程 中 所 需 要 数 据 的 锁 收 缩 阶 段 : 释 放 所 有 原 申 请 并 且 获 得 的 锁 7.2.5 封 锁 协 议 已 经 证 明 , 如 果 在 一 个 并 行 调 度 中 所 有 事务 的 封 锁 满 足 这 样 两 个 阶 段 要 求 , 该 调 度一 定 是 可 串 行 化 的 这 就 意 味 着 , 满 足 三级 封 锁 协 议 的 并 行 调 度 是 可 串 行 化 的 7.2.5 封 锁 协 议 实 际 上 , 上 述 封 锁 两 个 阶 段 还 可 单 独 定 义 , 依 照上 述 扩 展 和 收 缩 阶 段 设 置 封 锁 的 方 法 称 为 两 段 封锁 协 议 ( Two-phase Locking Protocol) 。

    扩 展 阶 段 : 可 以 加 新 锁 但 不 可 释 放 锁 ; 收 缩 阶 段 : 可 以 释 放 锁 但 不 可 加 新 锁 两 段 封 锁 协 议 实 际 上 规 定 了 在 一 个 事 务 中 所 有 的封 锁 操 作 必 须 出 现 在 第 一 个 释 放 锁 操 作 之 前 7.2.5 封 锁 协 议 遵 守 两 段 封 锁 协 议 的 封 锁 示 例 可 表 示 如 下 : T: Slock A Slock B Xlock C Unlock A Unlock B Unlock C7.2.5 封 锁 协 议 不 遵 守 两 个 阶 段 封 锁 协 议 的 封 锁 序 列 可 以 示 例 表示 如 下 : T: Slock A Unlock A Slock B Xlock C Unlock C Unlock B 按 照 两 段 封 锁 协 议 , 例 7-2中 的 事 务 T1和 T2操 作进 行 适 当 调 整 , 就 得 到 如 图 7-15所 示 封 锁 情 形T1 和 T2 : 7.2.5 封 锁 协 议 此 时 , 按 照 图 7-16所 示 并 发 调 度 , 就 可 得 到 相 应 可 串 行 化 结 果 。

    7.2.5 封 锁 协 议 7.2.5 封 锁 协 议 1 封 锁 协 议 带 来 的 新 问 题 活 锁 (Live Lock) : 在 封 锁 过 程 中 , 系 统 可 能使 某 个 事 务 永 远 处 于 等 待 状 态 , 得 不 到 封 锁 机 会 死 锁 ( Dead Lock) : 若 干 个 事 务 都 处 于 等待 状 态 , 相 互 等 待 对 方 解 除 封 锁 , 结 果 造 成 这 些事 务 都 无 法 进 行 , 系 统 进 入 对 锁 的 循 环 等 待 7.2.6 死 锁 与 活 锁 7.2.6 死 锁 与 活 锁 2 活 锁 与 死 锁 的 解 除 ( 1) 活 锁 的 解 除 采 用 “ 先 来 先 执 行 ” 、 “ 先 到 先 服 务 ” 策 略 ,也 就 是 采 取 简 单 的 排 队 方 式 当 多 事 务 请 求 封 锁 同 一 数 据 时 , 封 锁 子 系 统 按 照先 后 次 序 对 这 些 事 务 请 求 排 队 ; 该 数 据 上 锁 一 旦释 放 , 首 先 批 准 申 请 队 列 中 第 一 个 事 务 获 得 锁 7.2.6 死 锁 与 活 锁 ( 2) 死 锁 的 解 除 预 防 法 : 即 预 先 采 用 一 定 操 作 模 式 避 免死 锁 的 出 现 顺 序 申 请 法 : 将 封 锁 对 象 按 顺 序 编 号 , 事务 在 申 请 封 锁 时 按 顺 序 编 号 ( 从 小 到 大 或者 反 之 ) 申 请 , 避 免 死 锁 发 生 。

    7.2.6 死 锁 与 活 锁 ( 2) 死 锁 的 解 除 一 次 申 请 法 : 事 务 在 执 行 开 始 时 将 它 需 要的 所 有 锁 一 次 申 请 完 成 , 并 在 操 作 完 成 后一 次 性 归 还 所 有 的 锁 7.2.6 死 锁 与 活 锁 ( 2) 死 锁 的 解 除 解 除 法 : 允 许 产 生 死 锁 , 在 死 锁 产 生 后通 过 一 定 手 段 予 以 解 除 定 时 法 : 对 每 个 锁 设 置 一 个 时 限 , 当 事 务等 待 此 锁 超 过 时 限 后 即 认 为 已 经 产 生 死 锁 ,此 时 调 用 解 锁 程 序 , 以 解 除 死 锁 7.2.6 死 锁 与 活 锁 ( 2) 死 锁 的 解 除 等 待 图 法 : 事 务 等 待 图 是 一 种 特 殊 的 有 向图 G, 其 中 G的 顶 点 表 示 正 在 运 行 的 事 务 ,G的 边 表 示 事 务 等 待 的 情 形 事 务 等 待 图 实例 如 图 7-25所 示 其 中 , 如 果 事 务 T2等 待事 务 T1就 画 出 由 T2到 T1的 有 向 边 等 。

    建 立事 务 等 待 图 后 , 检 测 死 锁 就 转 化 为 判 断 G中是 存 在 回 路 问 题 7.2.6 死 锁 与 活 锁 并 发 控 制 子 系 统 周 期 性 检 测 事 务 等 待 图 ,检 验 方 法 可 以 基 于 “ 数 据 结 构 与 算 法 ” 中的 拓 扑 排 序 原 理 , 即 如 果 G中 顶 点 能 够 实 现拓 扑 排 序 , 则 其 中 没 有 回 路 , 即 无 死 锁 存在 , 否 则 事 务 等 待 图 中 就 存 在 死 锁 7.2.6 死 锁 与 活 锁 7.2.6 死 锁 与 活 锁 发 现 死 锁 后 , 通 常 选 择 一 个 处 理 死 锁 代 价最 小 的 事 务 即 “ 年 轻 ” ( 完 成 事 务 工 作 量少 ) 事 务 予 以 撤 销 , 释 放 该 事 务 持 有 的 所有 锁 , 使 “ 年 老 ” (完 成 事 务 工 作 量 大 )的 事务 先 行 执 行 , 待 这 些 事 务 执 行 完 成 并 释 放封 锁 后 , 撤 销 的 “ 年 轻 ” 事 务 再 继 续 执 行 在 图 7-25中 , 可 根 据 情 况 先 行 撤 销 T1、 T2或 T3中 一 个 可 使 得 其 余 事 务 继 续 执 行 。

    7.2.6 死 锁 与 活 锁 在 DBMS运 行 时 , 死 锁 本 身 相 当 棘 手 , 人 们自 然 不 希 望 死 锁 发 生 但 如 果 采 取 严 格 措施 , 杜 绝 死 锁 发 生 , 让 事 务 任 意 并 发 , 就有 可 能 破 坏 数 据 库 中 数 据 , 或 者 使 得 用 户读 取 错 误 数 据 从 这 个 意 义 上 讲 , 死 锁 的发 生 也 有 防 止 错 误 发 生 的 作 用 7.2.6 死 锁 与 活 锁 1 事 务 级 故 障 事 务 级 故 障 也 称 为 小 型 故 障 , 其 基 本 特 征是 故 障 产 生 的 影 响 范 围 在 一 个 事 务 之 内 7.3 数 据 库 故 障 恢 复 7.3.1 数 据 库 故 障 分 类 2 系 统 级 故 障 ( 1) 系 统 故 障 ( 2) 外 部 故 障7.3.1 数 据 库 故 障 分 类 3 介 质 级 故 障 ( 1) 磁 盘 故 障 ( 2) 计 算 机 病 毒 ( 3) 黑 客 入 侵7.3.1 数 据 库 故 障 分 类 1 基 本 原 理 确 定 数 据 库 是 否 可 以 恢 复 的 依 据 就 是 其 包 含 的 每一 条 信 息 是 否 都 可 以 利 用 冗 余 的 、 存 储 在 其 它 地方 的 信 息 进 行 重 构 。

    基 本 方 法 是 : 数 据 转 储 和 登记 日 志 文 件 实 行 数 据 转 储 : 定 时 对 数 据 库 进 行 备 份 , 其 作用 是 为 恢 复 提 供 数 据 基 础 建 立 日 志 文 件 : 记 录 事 务 对 数 据 库 的 更 新 操 作 ,其 作 用 是 将 数 据 库 尽 量 恢 复 到 最 近 状 态 7.3.2 数 据 库 故 障 恢 复 技 术 2 数 据 转 储 数 据 转 储 是 定 期 将 数 据 库 中 的 内 容 复 制 到另 一 个 存 储 设 备 中 去 , 这 些 存 储 的 拷 贝 称为 后 援 副 本 或 者 后 备 副 本 一 旦 系 统 发 生介 质 故 障 , 数 据 库 遭 到 破 坏 , 就 通 过 后 备文 件 的 装 入 , 将 数 据 库 恢 复 起 来 7.3.2 数 据 库 故 障 恢 复 技 术 ( 1) 从 转 储 运 行 状 态 看 , 可 分 为 静 态 和 动 态 转储 静 态 转 储 : 指 的 是 转 储 过 程 中 无 事 务 运 行 , 此时 不 允 许 对 数 据 执 行 任 何 操 作 ( 包 括 存 取 与 修 改操 作 ) , 转 储 事 务 与 应 用 事 务 不 可 并 发 执 行 。

    静态 转 储 得 到 的 必 然 是 具 有 数 据 一 致 性 的 副 本 动 态 转 储 : 即 转 储 过 程 中 可 以 有 事 务 并 发 运 行 ,允 许 对 数 据 库 进 行 操 作 , 转 储 事 务 与 应 用 程 序 可以 并 发 执 行 7.3.2 数 据 库 故 障 恢 复 技 术 ( 2) 从 转 储 进 行 方 式 来 看 , 可 以 分 为 海 量与 增 量 转 储 海 量 转 储 : 每 次 转 储 数 据 库 全 部 数 据 , 增 量 转 储 : 每 次 转 储 数 据 库 中 自 上 次 转储 以 来 产 生 变 化 的 那 些 数 据 7.3.2 数 据 库 故 障 恢 复 技 术 3 日 志 文 件 ( 1) 日 志 文 件 日 志 ( Logging) 是 系 统 为 数 据 恢 复 采 取 的 另 一种 数 据 冗 余 措 施 日 志 作 为 一 个 文 件 , 用 以 记 录事 务 对 数 据 库 的 每 一 次 插 入 、 删 除 和 修 改 等 更 新操 作 , 同 时 记 录 更 新 前 后 的 值 , 使 得 以 后 在 恢 复时 “ 有 案 可 查 ” 、 “ 有 据 可 依 ” 。

    7.3.2 数 据 库 故 障 恢 复 技 术 ( 2) 日 志 文 件 类 型 以 记 录 为 单 位 的 日 志 格 式 称 为 日 志 记 录 ( Log Record) 日 志 记 录 中 的 基 本 内 容 有 : 每 个 事 务 的 开 始 标 志 ( BEGIN TRANSACTION) 每 个 事 务 的 结 束 标 志 ( COMMIT 或 ROLLBACK) 每 个 事 务 的 所 有 更 新 操 作 ( 插 入 、 删 除 和 修 改 )7.3.2 数 据 库 故 障 恢 复 技 术 以 数 据 块 为 单 位 的 日 志 文 件 , 只 要 某 个数 据 块 中 存 在 数 据 更 新 , 就 需 要 将 整 个 数据 块 更 新 前 和 更 新 后 的 内 容 放 入 到 日 志 文件 中 7.3.2 数 据 库 故 障 恢 复 技 术 ( 3) 运 行 记 录 优 先 原 则 日 志 以 事 务 为 单 位 , 按 执 行 的 时 间 次 序 进 行 记 录 ,同 时 遵 循 “ 运 行 记 录 优 先 ” 原 则 在 恢 复 处 理 过程 中 , 将 对 数 据 进 行 的 修 改 写 到 数 据 库 中 和 将 表示 该 修 改 的 运 行 记 录 写 到 日 志 当 中 是 两 个 不 同 的操 作 , 这 样 就 有 一 个 “ 先 记 录 后 执 行 修 改 ” 还 是“ 先 执 行 修 改 再 记 录 ” 的 次 序 问 题 。

    如 果 在 这 两个 操 作 之 间 出 现 故 障 , 先 写 入 的 一 个 可 能 保 留 下来 , 另 一 个 就 可 能 丢 失 日 志 如 果 保 留 下 来 的 是数 据 库 的 修 改 , 而 在 运 行 记 录 中 没 有 记 录 下 这 个修 改 , 以 后 就 无 法 撤 销 这 个 修 改 由 此 看 来 , 为了 安 全 , 运 行 记 录 应 该 先 记 录 下 来 , 这 就 是 “ 运行 记 录 优 先 ” 原 则 7.3.2 数 据 库 故 障 恢 复 技 术 ( 4) 日 志 文 件 在 恢 复 中 作 用 日 志 文 件 在 数 据 库 恢 复 中 有 着 非 常 重 要 的 作 用 ,其 表 现 为 : 事 务 级 故 障 和 系 统 级 故 障 的 恢 复 必 需 使 用 日 志文 件 在 动 态 转 储 方 式 中 必 须 建 立 日 志 文 件 , 后 备 副本 和 日 志 文 件 结 合 起 来 才 能 有 效 恢 复 数 据 库 7.3.2 数 据 库 故 障 恢 复 技 术 在 静 态 转 储 方 式 中 也 可 以 建 立 和 使 用 日 志 文 件 。

    如 果 数 据 库 遭 到 破 坏 , 此 时 日 志 文 件 的 使 用 过 程为 : 通 过 重 新 装 入 后 备 副 本 将 数 据 库 恢 复 到 转 储结 束 时 的 正 确 状 态 ; 利 用 日 志 文 件 对 已 经 完 成 的事 务 进 行 重 新 处 理 , 对 故 障 尚 未 完 成 的 事 务 进 行撤 销 处 理 这 样 就 可 不 必 运 行 那 些 已 经 完 成 的 事务 程 序 就 可 以 把 数 据 库 恢 复 到 故 障 前 某 一 时 刻 的正 确 状 态 7.3.2 数 据 库 故 障 恢 复 技 术 1 事 务 级 故 障 恢 复 小 型 故 障 属 于 事 务 内 部 故 障 , 恢 复 方 法 是利 用 事 务 的 UNDO操 作 , 将 事 务 在 非 正 常终 止 时 利 用 UNDO恢 复 到 事 务 起 点 7.3.3 数 据 库 故 障 恢 复 策 略 2 系 统 级 故 障 恢 复 中 型 故 障 所 需 要 恢 复 的 事 务 有 两 种 : 事 务 非 正 常 终 止 已 经 提 交 的 事 务 , 但 其 更 新 操 作 还 留 在内 存 缓 冲 区 尚 未 来 得 及 写 入 , 由 于 故 障 使内 存 缓 冲 区 数 据 丢 失 。

    7.3.2 数 据 库 故 障 恢 复 技 术 3 介 质 级 故 障 恢 复 大 型 故 障 恢 复 使 整 个 磁 盘 、 内 存 都 遭 到 破 坏 的 故障 , 因 此 它 的 恢 复 就 较 为 复 杂 , 可 以 分 为 下 述 步骤 : 将 后 备 副 本 拷 贝 到 磁 盘 进 行 事 务 恢 复 第 一 步 : 检 查 日 志 文 件 , 将 拷 贝后 的 所 有 执 行 完 成 的 事 务 作 REDO 进 行 事 务 恢 复 第 二 步 : 检 查 日 志 文 件 , 将 未 执行 完 成 ( 即 事 务 非 正 常 终 止 ) 的 事 务 做 UNDO7.3.2 数 据 库 故 障 恢 复 技 术 1 事 务 概 念 与 性 质 事 务 概 念 要 点 : 相 关 数 据 操 作 的 有 限 序 列 ; 序 列 中 操 作 要 么 全 做 , 要 么 全 不 做 事 务 ACID性 质 : 原 子 性 : 保 障 事 务 概 念 本 质 一 致 性 : 保 障 数 据 正 确 性 与 完 整 性 隔 离 性 : 保 障 事 务 并 发 执 行 持 久 性 : 保 障 事 务 故 障 恢 复本 章 小 结 2 并 发 控 制 三 级 封 锁 协 议 写 数 据 时 必 须 加 X锁 , 且 事 务 结 束 释 X锁 ; 读 数 据 时 必 须 加 S锁 , 其 读 完 后 释 S锁 。

    + 读 数 据 时 必 须 加 S锁 , 其 事 务 结 束 释 S锁 + 两 段 封 锁 协 议 : 所 有 锁 必 须 在 第 一 释 锁 操 作 之 前 完 成 活 锁 与 死 锁 : 本 章 小 结 2 故 障 恢 复 数 据 转 储 日 志 文 件 本 章 小 结 。

    点击阅读更多内容
    卖家[上传人]:sanyue2019
    资质:实名认证