㈠ 在数据库系统中的事务是什么是否就是指一个具体操作
实 时 事 务 模 型
----1 . 系 统 模 型与 传 统 数 据 库 系 统 相 类 似, 实 时 数 据 库 系 统 的 操 作 也 是 以 事 务 的 形 式 出 现。 事 务 就 是 包 含 在BEGIN/COMMIT/ABORT 之 间 的 操 作 序 列。 系 统 以 事 务 为 单 位 分 配CPU、 数 据 等 资 源, 进 行 优 先 级 的 分 配、 调 度 处 理 等。
---- 实 时 数 据 库 系 统 中 的 事 务 与 传 统 事 务 有 很 大 的 不 同, 其 事 务 可 以 有 定 时 限 制( 典 型 地 为 截 止 期), 系 统 追 求 的 目 标 不 是 系 统 的 吞 吐 量, 而 是 单 个 事 务 定 时 限 制 的 满 足, 以 使 满 足 定 时 限 制 的 事 务 比 率 最 大; 传 统 事 务 的 原 子 性、 一 致 性、 隔 离 性 及 永 久 性 在 实 时 环 境 下 变 得 太 严 格 或 不 可 能; 要 求 采 用" 识 时" 机 制 来 处 理 事 务 的 调 度 或 并 发 控 制, 而 不 是 传 统 的 先 来 先 服 务 方 式。
----2 . 结 构 模 型
---- 传 统 数 据 库 中 事 务 就 是 一 个 平 坦 的 操 作 序 列, 事 务 的 执 行 要 么 顺 利 执 行 到 提 交, 要 么 夭 折 而 不 在 系 统 的 任 何 部 分 留 有 痕 迹。 在 实 时 应 用 环 境 下 则 不 同:
应 用 语 义 有 时 显 式 地 要 求 结 构 上 的 一 个 事 务 为 另 一 个 事 务 的 子 事 务。 例 如, 在CAD 工 程 中, 一 个 工 程 事 务 划 分 成 若 干 个 设 计 事 务, 而 每 一 设 计 事 务 又 可 分 成 若 干 个 子 任 务 而 分 配 给 各 设 计 者。
实 时 应 用 中 被 触 发 的 活 动 依 应 用 要 求 可 以 是 触 发 它 的 事 务 的 子 事 务。 在 过 程 控 制、 自 动 化 等 领 域 这 种 情 形 很 普 遍。
在 分 布 式 应 用 环 境 中, 一 个 事 务 可 能 要 分 出 若 干 在 不 同 节 点 上 执 行 的 代 理 事 务, 它 们 分 工 合 作 且 都 作 为 原 事 务 的 子 事 务。
在 工 程 应 用 中, 普 遍 存 在 长 寿 事 务 或 开 端 事 务。 这 种 事 务 会 造 成 系 统 资 源 需 求 的 瓶 颈。 为 此, 可 将 这 种 事 务 划 分 成 若 干 逻 辑 相 对 独 立 的 子 事 务, 以 便 当 其 结 束 时 能 提 前 释 放 占 用 的 资 源。
---- 所 以, 实 时 应 用 要 求 系 统 提 供 事 务 嵌 套 机 制。 包 含 其 他 事 务 的 事 务 称 为" 父 事 务", 被 包 含 的 事 务 称 为 " 子 事 务", 没 有 父 事 务 的 事 务 为" 根 事 务"。 事 务 之 间 可 以 形 成 嵌 套 关 系。
实 时 事 务 的 特 征
----1 . 定 时 性
---- 实 时 应 用 中 事 务 的 定 时 性 来 源 于 两 方 面: 一 是 外 部 环 境 显 式 给 出 的 反 应 时 间 要 求, 如 截 止 期 等; 二 是 由 于 系 统 中 的 数 据 随 时 间 变 化 而 转 嫁 来 的。
---- 定 时 性 包 括 了 两 方 面 的 含 义:
---- 定 时 限 制 事 务 的 执 行 具 有 显 式 的 时 限, 如 期 限、 截 止 时 间 等。 这 是 由 于 控 制 系 统 要 随 时 紧 紧 地 跟 踪 被 控 系 统 而 引 起 的, 它 要 求RTDB 必 须 有 时 间 处 理 机 构。 时 限 还 可 有 软 硬 之 分。
---- 定 时 正 确 性 事 务 能 按 合 适 的 时 间 要 求 正 确 执 行。 这 是 由 于 要 求 数 据 对 于 控 制 系 统 的 各 种 决 策 活 动 随 时 有 效 而 引 起 的, 它 要 求 权 衡 定 时 限 制 与 数 据 一 致 性 等 多 方 面 因 素, 提 供 合 适 的 调 度 算 法。
---- 实 时 事 务 有 不 同 的 定 时 限 制, 其 中 最 重 要 的 有:
---- 截 止 时 间 实 时 事 务 完 成 的 最 后 期 限。 它 可 以 有 硬、 软 之 分, 具 有 硬 截 止 时 间 的 事 务( 称 为 硬 实 时 事 务), 必 须 在 其 截 止 时 间 以 前 完 成, 否 则 将 带 来 灾 难 性 的 后 果, 故 到 达 其 截 止 时 间 还 不 能 完 成 的 硬 实 时 事 务 必 须 夭 折。 具 有 软 截 止 时 间 的 事 务( 称 为 软 实 时 事 务), 应 该 在 其 截 止 期 完 成, 但 超 过 其 截 止 时 间 也 还 有 一 定 意 义( 尽 管 不 断 下 降), 故 软 实 时 事 务 到 达 其 截 止 时 间 后 不 必 立 即 夭 折 它。
---- 到 达 时 间 事 务 在 系 统 中 生 成 的 时 间。 它 可 以 是 可 预 报 的, 也 可 以 是 不 可 预 报 的。 可 预 报 的 到 达 时 间 可 显 式 地 给 出 或 者 作 为 一 个 导 出 函 数, 如 周 期 事 务 的 到 达 时 间 是 可 预 报 的。 不 可 预 报 的 到 达 时 间 是 指 当 相 应 事 务 到 达 系 统 时 才 能 知 道, 非 周 期 事 务 的 到 达 时 间 就 是 不 可 预 报 的。
---- 期 望 执 行 时 间 估 算 的 最 坏 情 况 执 行 时 间。 由 于 各 种 不 可 预 报 性 因 素, 它 很 难 做 到 准 确, 估 算 的 最 坏 情 况 执 行 时 间 可 能 与 实 际 情 况 相 差 很 大。 然 而, 为 了 合 理 地 得 到 事 务 的 截 止 时 间 及 适 当 地 调 度 以 使 其 满 足, 又 必 须 事 先 较 准 确 地 估 算 其 执 行 时 间。
----2 . 语 义 相 关 性
---- 实 时 数 据 库 事 务 之 间 存 在 着 各 种 关 系, 包 括 结 构 关 系、 数 据 与 通 信 关 系、 时 间 关 系 等, 这 些 关 系 带 来 了 事 务 间 的 各 种 相 关 性。
----(1) 结 构 相 关
---- 它 来 自 于 复 杂 事 务 模 型 的 结 构 特 征, 用 来 建 模 复 杂 事 务 内 部 并 发 事 务 行 为 的 一 种 约 束。 不 同 的 复 杂 事 务 模 型 有 不 同 的 结 构 相 关 性, 但 它 们 可 以 通 过 事 务 间 的" 执 行 依 赖 性" 来 定 义, 实 时 嵌 套 事 务 中 基 本 的 事 务 依 赖 有:
子 事 务 对 父 事 务 的 开 始 依 赖(BD): 子 事 务 开 始 前 父 事 务 已 经 开 始;
父 事 务 对 子 事 务 的 提 交 依 赖(CD): 父 事 务 提 交 前 子 事 务 已 经 结 束( 提 交 或 夭 折);
子 事 务 对 父 事 务 的 夭 折 依 赖(AD): 父 事 务 夭 折 则 子 事 务 一 定 夭 折。
----(2) 数 据 相 关
---- 数 据 相 关 就 是 不 同 事 务 间 的 共 享 数 据 联 系, 但 此" 共 享" 概 念 比 传 统 的 具 有 更 广 的 意 义: 实 时 嵌 套 事 务 中 的 子 事 务 共 享 父 事 务 数 据, 子 事 务 提 交 时 其 对 数 据 库 的 更 改 委 托 给 父 事 务, 只 有 父 事 务 提 交 时 才 能 真 正 地 写 入 数 据 库。
----(3) 功 能 替 代/ 结 果 补 偿
---- 一 个 实 时 应 用 常 常 由 若 干 任 务 组 成, 而 一 个 任 务 有 时 可 以 通 过 不 同 途 径 来 实 现。 一 个 应 用 建 模 为 一 个 事 务, 一 个 任 务 则 建 模 为 一 组 功 能 等 价 的 子 事 务, 称 为 该 任 务 的 替 代 集。 若 一 个 任 务 的 替 代 集 中 的 子 事 务 之 一 能 成 功 执 行, 则 该 任 务 是 可 完 成 的。 若 对 应 一 个 事 务 的 所 有 任 务 可 完 成, 则 该 事 务 是 成 功 的( 可 提 交)。 功 能 替 代 导 致 了 事 务 执 行 路 径 的 不 确 定 性, 即 一 个 事 务 成 功 执 行 的 路 径 依 赖 于 执 行 过 程 中( 子 事 务) 失 败 的 发 生, 且 即 使 某 些 子 事 务 失 败 了, 事 务 仍 可 能 顺 利 提 交。 这 还 体 现 了 实 时 事 务 的 健 壮 性, 即 有 的 事 务( 任 务) 不 能 失 败。
---- 由 于 前 面 所 述 的 事 务 的 结 构 复 杂 性 和 功 能 替 代 性, 因 此, 事 务 的 执 行 经 历 不 确 定, 一 个 子 事 务 的 执 行 直 到 提 交 时 还 不 能 确 定 它 是 否 需 要。 若 一 个( 子) 事 务 提 交 后, 发 现 它 是 不 需 要 的, 该 怎 么 办 ? 另 一 方 面, 一 个 实 时 事 务 可 以 物 理 改 变 现 实 世 界 的 状 态, 换 句 话 说, 事 务 可 以 启 动 各 种 活 动, 这 些 活 动 在 它 提 交 前 就 已 经 影 响 了 现 实 世 界, 因 而 当 这 种 事 务 夭 折 时, 不 能 进 行 传 统 意 义 下 的" 还 原"(Undo)。 于 是 需 要 一 种" 补 偿" 活 动 来 抵 消 它 所 有 的 影 响, 这 种 补 偿 活 动 也 是 事 务。 对 于 一 个( 子) 事 务, 若 存 在 能 抵 消 它 提 交 后 所 产 生 的 所 有 影 响 的( 子) 事 务, 则 称 其 为 是 可 补 偿 的, 否 则 是 不 可 补 偿 的。 当 然, 不 是 每 一 个( 子) 事 务 都 是 可 补 偿 的, 不 可 补 偿 的( 子) 事 务 在 知 道 它 确 实 是 需 要 的 以 前, 一 定 不 能 提 交。
实 时 事 务 分 类
---- 实 时 事 务 可 以 从 不 同 的 侧 面 进 行 分 类。
----1 . 按 关 键 性 分 类
---- 也 就 是 按 事 务 时 限( 截 止 期) 的 性 质, 即 事 务 超 截 止 期 对 系 统 带 来 的 影 响 分 类。 而 这 种 时 限 的 性 质 可 以 很 好 地 用 价 值 函 数 来 建 模, 于 是 我 们 有:
---- 硬( 截 止 期/ 实 时) 事 务 超 截 止 期 会 导 致 恶 果( 价 值 函 数 取 大 且 可 能 不 断 增 加 的 负 值)。 它 对 应 于 安 全 危 急 性 活 动。
---- 软( 截 止 期/ 实 时) 事 务 超 截 止 期 仍 有 一 定 的 价 值, 且 价 值 不 断 下 降, 直 到 某 一 时 刻( 称 为 最 终 有 效 时 间) 降 到 零, 此 后 保 持 为 零( 不 会 为 负)。
---- 固( 截 止 期/ 实 时) 事 务 一 旦 到 达 截 止 时 间, 其 价 值 立 即 降 为 零, 此 后 固 定 为 零( 也 不 会 为 负)。 显 然, 它 是 软 实 时 事 务 在 最 终 有 效 时 间 与 截 止 时 间 重 合 情 况 的 特 例。
----2 . 按 功 能 分 类
---- 一 个 实 时 数 据 库 系 统 以 两 种 方 式 直 接 与 现 实 世 界 交 互 作 用, 一 是 关 于 现 实 世 界 状 态 或 事 件 的 信 息 被 记 录 到 数 据 库 中, 二 是 事 务 可 以 启 动 各 种 影 响 现 实 世 界 的 活 动。 这 就 给 予 我 们 一 种 如 下 事 务 分 类:
---- 数 据 接 收 事 务 记 录 现 实 世 界 的 状 态 或 发 生 的 事 件 到 数 据 库 中。 它 是 简 单 的 只 写 事 务; 为 了 保 持 数 据 库 的" 外 部 一 致" 和 跟 踪 记 录, 它 应 是 短 的、 周 期 的, 且 应 是 被 立 即 执 行( 不 能 等 待 和 阻 塞) 的 硬 实 时 事 务。 为 了 保 证 其 定 时 限 制 的 满 足, 它 可 能 会 引 起 对 数 据 库 一 致 性 的 破 坏。
---- 数 据 处 理 事 务 类 似 传 统 数 据 库 的 事 务。 它 用 来 恢 复 已 违 反 了 一 致 性( 可 能 由 于 数 据 接 收 事 务 的 结 果) 的 数 据 库 的 状 态。 这 种 事 务 可 看 作 维 护 正 常 运 行 的 监 控 器, 它 可 能 是" 长 寿" 的。
---- 控 制 事 务 引 起 现 实 世 界 中 有 关 活 动 的 执 行。 像 数 据 接 收 事 务 一 样, 这 种 事 务 是 很 短 的, 尽 管 所 引 起 的 现 实 活 动 可 能 要 执 行 很 长 时 间。 它 通 常 也 是 硬 实 时 的。 这 种 事 务 还 可 以 作 为 数 据 处 理 事 务 的 子 事 务 而 被 调 用, 而 它 本 身 也 可 以 触 发 子 事 务, 比 如 以 一 子 事 务 来 检 测 所 引 起 的 现 实 活 动。
实 时 事 务 的 正 确 性
----1 . 正 确 性 概 念 及 内 涵 实 时 事 务 与 传 统 事 务 的 本 质 区 别 就 在 于 其 有 定 时 限 制, 因 此, 事 务 处 理 必 须 同 时 满 足 一 致 性 要 求 和 定 时 限 制。 虽 然 实 时 事 务 的 正 确 性 与 传 统 事 务 一 样, 也 包 括 数 据 库 状 态 正 确 性 和 事 务 执 行 正 确 性 两 个 方 面, 但 其 含 义 与 内 容 有 很 大 的 不 同。 数 据 库 状 态 正 确 性 包 含 内 部 一 致 和 时 间 一 致, 事 务 执 行 正 确 性 则 包 含 其 结 果 正 确 性、 行 为 正 确 性、 结 构 正 确 性 和 时 间 正 确 性。
----2 . 正 确 性 标 准
---- 传 统 数 据 库 中 的 原 子 性 和 可 串 行 化 包 含 了 事 务 正 确 性 的 所 有 概 念。 而 实 时 嵌 套 事 务 正 确 性 的 内 容 更 为 丰 富, 实 现 的 手 段 也 就 更 为 复 杂。 传 统 可 串 行 化 标 准 在 实 时 环 境 下 太 严 格 或 不 适 合, 限 制 了 系 统 中 事 务 执 行 的 并 发 度, 对 于 满 足 事 务 定 时 限 制 是 不 利 的。 我 们 开 发 了 一 种 新 颖 的 准 一 致 性 可 串 行 化 并 发 控 制 策 略, 事 务 执 行 给 系 统 带 来 的 不 一 致 被 限 定 在 一 定 的 范 围 内, 并 在 一 定 的 时 机 恢 复 数 据 库 到 一 致 状 态。 而 实 时 事 务 的 时 间 正 确 性 需 要" 识 时" 协 议 实 现, 结 构 正 确 性 需 要 事 务 管 理 检 查 事 务 间 的 结 构 相 关 性 来 实 现。
实 时 事 务 处 理
----1 . 实 时 事 务 优 先 级 分 配
---- 实 时 事 务 的 调 度 和 并 发 控 制 都 是 基 于 事 务 的 优 先 级 进 行 的, 因 此, 如 何 分 配 事 务 的 优 先 级 是 一 个 重 要 的 问 题。
---- 常 见 的 事 务 优 先 级 分 配 算 法 有 以 下 几 种:
---- 最 早 放 行 最 优 先(Earliest Release First) 该 策 略 将 最 高 优 先 级 指 派 给 具 有 最 早" 放 行"(Release) 时 间 的 事 务。 所 谓 放 行 时 间 就 是 事 务 可 以 开 始 执 行 的 最 早 时 间, 与 此 相 联 的 有 事 务 到 达(Arrive) 时 间、 事 务 接 纳(Admission) 时 间。
---- 截 止 期 最 早 最 优 先(Earliest Deadline First) 即 具 有 最 早 截 止 期 者 优 先 级 最 高。
---- 可 达 截 止 期 最 早 最 优 先(Earliest Feasible Deadline First) 具 有 最 早 的 可 达 截 止 期 者 优 先 级 最 高。 所 谓 一 个 事 务t 的 截 止 期 是 当 前 时 间" 可 达 到" 的, 乃 指 τ +(E -P) ≤d。 这 里 τ 为 当 前 时 间,E、P 分 别 为 事 务T 的 执 行 时 间 估 算 和 已 执 行 时 间, d 为 其 截 止 期。
---- 空 余 时 间 最 短 最 优 先(Least Slack First) 事 务t 的 空 余 时 间S=d -( τ +E -P), 即 推 迟T 的 执 行 而 仍 然 满 足 其 截 止 期 的 可 推 迟 时 间 量 估 算。
---- 价 值 最 高 最 优 先(Highest Value First) 每 一 事 务 都 有 一 价 值 函 数, 其 值 最 大 者 最 优 先。 问 题 是 如 何 合 理 地 构 造 价 值 函 数, 一 个 例 子 是:
---- V(t)=c(w1( τ - τS) -w2d +w3P -w4S)
---- 其 中 τ、d、P、S 的 意 义 同 上,c、 τs 分 别 为 t 的 危 急 度、 开 始 时 间,wi 为 加 权 因 子。
---- 价 值 密 度 最 大 最 优 先(Greatest Value Density First) 价 值 密 度 函 数 为:
---- 即 事 务 完 成 时 的 期 望 价 值 与 实 现 该 价 值 所 需 计 算 量 的 比 最 大 者 优 先 级 最 高。 显 然, 对 于 期 望 价 值 一 样 的 事 务, 该 策 略 偏 向 较 短 者, 因 为 它 每 单 位 消 耗 时 间 所 获 得 的 价 值 更 大。 与 上 面 的HVF 策 略 一 样, 这 里 也 有 如 何 设 计 价 值 函 数 的 问 题。
----2 . 实 时 事 务 并 发 控 制 和 调 度
---- 在 实 时 应 用 环 境 中, 如 果 处 理 不 当, 可 能 造 成" 优 先 级 颠 倒", 即 优 先 级 高 的 事 务 等 待 优 先 级 低 的 事 务, 这 对 实 现 事 务 的 定 时 限 制 是 不 利 的。 为 此, 我 们 提 出 了 以 下 几 种 改 进 方 案:
----(1) 优 先 级 继 承
---- 优 先 级 继 承 的 基 本 思 想 是: 当 发 生 优 先 级 颠 倒 时, 将 占 有 者tH 的 优 先 级 提 高 到 与tR 的 一 样( 即 继 承tR 的 优 先 级),tH 继 续 执 行 直 到 结 束( 提 交 或 夭 折)。 在tH 因 某 种 原 因( 如 成 为 死 锁 的 牺 牲 者) 而 重 启 动 时, 它 恢 复 原 来 的 优 先 级。 让tH 继 承 tR 优 先 级 是 为 了 让 它 尽 快 完 成, 因 为tH 的 进 展 也 意 味 着tR 的 进 展。 这 种 策 略 称 为 优 先 继 承(PI)。
----(2) 高 优 先 级 夭 折
---- 这 种 策 略 的 思 想 是, 当 发 生 优 先 级 颠 倒 时, 夭 折 低 优 先 级 的tH 而 让 高 优 先 级 的tR 执 行。 该 策 略 称" 高 优 先" 法(HP)。
---- 这 种 策 略 可 以 消 除 死 锁, 但 它 的 问 题 是:
对 那 些 已 执 行 时 间 很 长 而 还 需 执 行 的 时 间 已 很 短 的tH, 夭 折 的 代 价 很 大。 尤 其 是 当dH( 截 止 时 间) -ct( 当 前 时 间) 与tH 的" 剩 余 执 行 时 间 估 算"el(tH) 相 差 不 大 时, 重 启 动 必 然 导 致 其 超 截 止 时 间, 而 且 浪 费 大 量 系 统 资 源, 使 整 个 系 统 性 能 下 降。
若 采 用 像LSF 这 样 的 动 态 优 先 级 分 配 策 略, 则 被 夭 折 而 重 启 动 的tH 可 能 马 上 会 有 比tR 更 高 的 优 先 级。 为 此, 当 重 启 动 的tH 再 次 与 tR 冲 突 时,tR 可 能 又 被tH 夭 折, 这 样 就 导 致 循 环 夭 折。
㈡ 事务处理的事务处理
在许多大型、关键的应用程序中,计算机每秒钟都在执行大量的任务。更为经常的不是这些任务本身,而是将这些任务结合在一起完成一个业务要求,称为事务。如果能成功地执行一个任务,而在第二个或第三个相关的任务中出现错误,将会发生什么?这个错误很可能使系统处于不一致状态。这时事务变得非常重要,它能使系统摆脱这种不一致的状态。
用户信息控制系统(CICS)、Tuxedo和TopEnd等产品都是事务处理系统的例子,它们为应用程序提供事务服务。
为了讨论事务处理,必须首先定义事务。
事务是一个最小的工作单元,不论成功与否都作为一个整体进行工作。
不会有部分完成的事务。由于事务是由几个任务组成的,因此如果一个事务作为一个整体是成功的,则事务中的每个任务都必须成功。如果事务中有一部分失败,则整个事务失败。
当事务失败时,系统返回到事务开始时的状态。这个取消所有变化的过程称为“回滚”( rollback )。例如,如果一个事务成功更新了两个表,在更新第三个表时失败,则系统将两次更新恢复原状,并返回到原始的状态。
保持应用程序的完整性
任何应用程序的关键是要确保它所执行的所有操作都是正确的,如果应用程序仅仅是部分地完成操作,那么应用程序中的数据,甚至整个系统将会处于不一致状态。例如,看一下银行转账的例子,如果从一个帐户中提出钱,而在钱到达另一个帐户前出错,那么在此应用程序中的数据是错误的,而且失去了它的完整性,也就是说钱会莫名其妙地消失。
克服这种错误有两种方法:
在传统的编程模型中,开发者必须防止任何方式的操作失败。对任何失败点,开发者必须加上支持应用程序返回到这一操作开始时的状态的措施。换句话说,开发者必须加入代码使系统能够在操作出现错误时恢复原状(撤消)。
更为简单的方法是在事务处理系统的环境之内进行操作,事务处理系统的任务就是保证整个事务或者完全成功,或者什么也不做。如果事务的所有任务都成功地完成,那么在应用程序中的变化就提交给系统,系统就处理下一个事务或任务。如果操作中某一部分不能成功地完成,这将使系统处于无效的状态,应回滚系统的变化,并使应用程序返回到原来的状态。
事务处理系统的能力就是将完成这些操作的知识嵌入到系统本身。开发者不必为将系统恢复原状编写代码,需要做的只是告诉系统执行任务是否成功,剩下的事情由事务处理系统自动完成。
在帮助开发人员解决复杂的问题时,事务处理系统的另一好处是其ACID属性。
ACID属性
当事务处理系统创建事务时,将确保事务有某些特性。组件的开发者们假设事务的特性应该是一些不需要他们亲自管理的特性。这些特性称为ACID特性。
ACID就是:原子性(Atomicity )、一致性( Consistency )、隔离性( Isolation)和持久性(Durabilily)。
1. 原子性
原子性属性用于标识事务是否完全地完成,一个事务的任何更新要在系统上完全完成,如果由于某种原因出错,事务不能完成它的全部任务,系统将返回到事务未开始的状态。
让我们再看一下银行转帐的例子。如果在转帐的过程中出现错误,整个事务将会回滚。只有当事务中的所有部分都成功执行了,才将事务写入磁盘并使变化永久化。
为了提供回滚或者撤消未提交的变化的能力,许多数据源采用日志机制。例如,sql Server使用一个预写事务日志,在将数据应用于(或提交到)实际数据页面前,先写在事务日志上。但是,其他一些数据源不是关系型数据库管理系统(RDBMS),它们管理未提交事务的方式完全不同。只要事务回滚时,数据源可以撤消所有未提交的改变,那么这种技术应该可用于管理事务。
2. 一致性
事务在系统完整性中实施一致性,这通过保证系统的任何事务最后都处于有效状态来实现。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。因为事务开始时系统处于一致状态,所以现在系统仍然处于一致状态。
再让我们回头看一下银行转帐的例子,在帐户转换和资金转移前,帐户处于有效状态。如果事务成功地完成,并且提交事务,则帐户处于新的有效的状态。如果事务出错,终止后,帐户返回到原先的有效状态。
记住,事务不负责实施数据完整性,而仅仅负责在事务提交或终止以后确保数据返回到一致状态。理解数据完整性规则并写代码实现完整性的重任通常落在开发者肩上,他们根据业务要求进行设计。
当许多用户同时使用和修改同样的数据时,事务必须保持其数据的完整性和一致性。
3. 隔离性
在隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。
这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
重要的是,在隔离状态执行事务,系统的状态有可能是不一致的,在结束事务前,应确保系统处于一致状态。但是在每个单独的事务中,系统的状态可能会发生变化。如果事务不是在隔离状态运行,它就可能从系统中访问数据,而系统可能处于不一致状态。通过提供事务隔离,可以阻止这类事件的发生。
在银行的示例中,这意味着在这个系统内,其他过程和事务在我们的事务完成前看不到我们的事务引起的任何变化,这对于终止的情况非常重要。如果有另一个过程根据帐户余额进行相应处理,而它在我们的事务完成前就能看到它造成的变化,那么这个过程的决策可能建立在错误的数据之上,因为我们的事务可能终止。这就是说明了为什么事务产生的变化,直到事务完成,才对系统的其他部分可见。
隔离性不仅仅保证多个事务不能同时修改相同数据,而且能够保证事务操作产生的变化直到变化被提交或终止时才能对另一个事务可见,并发的事务彼此之间毫无影响。这就意味着所有要求修改或读取的数据已经被锁定在事务中,直到事务完成才能释放。大多数数据库,例如SQL Server以及其他的RDBMS,通过使用锁定来实现隔离,事务中涉及的各个数据项或数据集使用锁定来防止并发访问。
4. 持久性
持久性意味着一旦事务执行成功,在系统中产生的所有变化将是永久的。应该存在一些检查点防止在系统失败时丢失信息。甚至硬件本身失败,系统的状态仍能通过在日志中记录事务完成的任务进行重建。持久性的概念允许开发者认为不管系统以后发生了什么变化,完成的事务是系统永久的部分。
在银行的例子中,资金的转移是永久的,一直保持在系统中。这听起来似乎简单,但这,依赖于将数据写入磁盘,特别需要指出的是,在事务完全完成并提交后才写入磁盘的。
所有这些事务特性,不管其内部如何关联,仅仅是保证从事务开始到事务完成,不管事务成功与否,都能正确地管理事务涉及的数据。
㈢ 什么是事务事务中的提交和回滚是什么意思
事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。
事务的提交是指事务里的所有操作都正常完成。
事务的回滚是指程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。
(3)访问其他系统提交事务扩展阅读:
事务的特征:
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
1、原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
2、一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
4、持久性(rability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
㈣ 在局域网内,想访问其他计算机,系统提示说服务器没有设置事务处理,哪位高手帮帮忙多谢了
想彻底解决“服务器没有事务处理”问题的同志请仔细阅读
自Windows 2000系统以后,微软就不再用NETBIOS来注册计算机名,也不再靠WINS对计算机名称进行解析,而是全部交付给了DNS。
那么Windows系统是如何通过以上名称注册和解析原理来实现在“网上邻居”上的浏览的呢?这就是要涉及到Windows系统中的一个非常重要的服务--Computer Browser Service(计算机浏览器服务)。 计算机浏览服务是一系列分布式的含有可用的网络资源列表,这些列表分布在一些计算机上,提出浏览请求的计算机充当浏览工作站,而提供浏览列表的计算机充当浏览服务器。
浏览器的种类及运行该服务的计算机为实现网络浏览目的而执行的各种职能介绍如下:
域主浏览器―――仅用于域环境。在默认情况下,域的主域控制器 (PDC) 完成该任务。 收集和维护域中可用服务器的主浏览列表,以及网络中其他域和工作组的名称。分配和同步其他子网中主浏览器的主浏览列表,该子网有属于相同域的计算机。
主浏览器 ―――收集和维护子网中可用网络服务器的主浏览列表。完全复制列出的包括主浏览列表的信息以获得网络的完整浏览列表。向同一子网上的备份浏览器分发完整列表。
备份浏览器―――从主浏览器接收本子网的浏览列表副本。根据请求向其他计算机分发浏览列表。
潜在浏览器―――在正常情况下,按非浏览器运行。在接到子网主浏览器指令后才会成为备份浏览器。
在某些条件下,如果担任指定浏览器职能的计算机失效或关闭,浏览器(或潜在浏览器)可能改作其他职能。这通常通过称作“浏览器选举”的过程来执行。在Windows操作系统的早期版本中浏览服务可理解为三个关键过程:
1)浏览信息的收集
当子网上的主浏览器收到主机声明后,将发送计算机的名称合并到当前的浏览列表中。如果名称已经存在,则刷新列表。如果名称不存在,则添加到列表。
(2)浏览信息的分发
浏览列表由子网主浏览器分发给备份浏览器。主浏览器必须周期性地向本地子网广播包含配置的域或工作组名称的声明消息。该消息确认主浏览器在网络上的存在。如果主浏览器在一段时间不能声明自己,则将发生浏览器选举。一旦主浏览器存在或(因失败事件而)被替换,其他备份浏览器周期性地与其联系以获得其所维护子网浏览列表的更新副本。
(3)向来自客户的浏览请求提供服务
当浏览客户计算机在子网上启动后,将向主浏览器请求在子网上备份浏览器的列表。主浏览器响应该请求并向客户端提供包含三个备份浏览器的列表。浏览客户端则随机地从列表中选择一个备份浏览器并与其联系以获得浏览列表副本。被选中的备份浏览器响应该客户机,给它一个域或工作组的服务器列表。客户机再从该服务器列表中取得这个服务器上的可用资源的列表。
浏览器选举
在NT域环境下或工作组环境下,浏览服务维护着一个浏览列表,它包含所有可使用的域、工作组和计算机名等,是共享资源的目录。当我们使用“网上邻居”时,就在使用这个浏览服务。这些系统的浏览服务系统同样包含了主浏览器、备份浏览器和浏览器客户等角色。
(1)选举是通过发广播来实现的,如果哪个计算机的选举条件比它收到的报文要好,则它将广播自己的选举条件,收到别人的选举条件后每个计算机根据自己在域中的角色延迟不等的时间后再做反应,这样能减少选举条件较差的计算机发送选举报文。 (2)当一个计算机选举成为主浏览器并且它的浏览列表是空时,它将广播一个请求通知的报文,强迫所有的计算机必须在30秒内给予答复,这个30秒的时间是为了防止服务器过载或报文丢失。 (3)除了承担主浏览器和备份浏览器任务的计算机外,其他计算机将向主浏览器周期性地发布通知,告知自己是可利用的资源。这个时间开始是1分钟、2分钟、4分钟、8分钟,以后就是每12分钟一次了。 (4)如果某个计算机关机了,主浏览器连续3个周期也就是36分钟没有收到它的消息,将认定它不可用,并从浏览列表中删掉它。但是它还留在备份浏览器的计算机里,备份浏览器每隔15分钟呼叫主浏览器一次以获得更新的网络资源列表,也就是说不可用的资源最多要等到36+15=51分钟后才会从网上彻底消失。这就是为什么有的计算机改了名,但旧名字依旧留在网上一段时间的原因。 在一个工作组里有一个主浏览器,那么在多个工作组、多个域甚至多个子网里中又将如何呢?这就需要一个域主浏览器,每个工作组或域的主浏览器要周期性地向这个域主浏览器发送自已所管辖的列表,这个周期开始是1分钟,5次后是15分钟。如果3个周期内没有收到这个报文,域主浏览器也将它从自己的列表中去除。也就是说,当一个工作组失效后,它还将在主列表中保留45分钟。域主浏览器默认为主域控制器,Windows XP Professional版本的计算机不能担此重任。当收到浏览列表后,计算机必须能解析里面的NetBIOS名,这就要求网络的WINS服务或DNS服务必须正常,浏览才能正常,因为浏览的选举过程是通过UDP广播实现的。
作为网络管理员,当网上邻居出现问题时,要一步步分析,看是暂时的还是选举过程出了问题。目前没有办法证明浏览列表是否完整,但有办法发现某可用资源是否在列表里,甚至可以强迫开始一次选举。
注意:重启服务器上的COMPUTER BROWSER服务,打开服务器上的ipc$,确保客户端全部打开,在服务器端用“ping 客户端IP”逐一ping过来,确保可以全部ping通。如果客户端是win2000的话,也要重启一下COMPUTER BROWSER服务,
彻底解决方法的话,最好是建立一个域,由主域控制器来充当浏览服务是最理想的。
不同情况解决方法不同,以上是原理分析,下面介绍常见的解决办法(可能不适用于您的情况):
1、局域网“服务器没有设置事务处理”是因为局域网的主控浏览服务器的列表文件坏了,首先查毒,如果没有病毒的话
解决的办法就是:先在局域网中找一台WIN2K,改个工作组名,然后依次改剩下的机器的(如果局域网中有WIN2K SERVER的就先改SERVER)
2、文章分类: 局域网
文章标题: 点击网上邻居的工作组,出现服务器没有设置事务处理
关 键 字: 0
文章作者: alonglee 转
文章来源: 0
发表时间: 2004-6-20 1:59:00
上次我发了一篇《服务器没有设置事务处理-故障处理》,后来发现这个问题并不那么简单,再找来一篇文章:
这是一个以前遇见过的问题,就是A win2000 ,发现自己的c,d默认共享没有了,ipc共享也没有了,别人在网上邻居访问A计算机会出现,“服务器没有设置事务处理”,自己访问自己用unc路径也不能访问,但A win2000访问别人没有问题,查了一下资料,发现是中毒了。
首先,我在进程中查看到一个叫wuamgrd.exe这个进程,证明中了一种叫“w32.spybot.worm的病毒“,在进程中结束她,然后在%SYSTEM%\SYSTEM32 下找\wuamgrd.EXE,把它删除,重新启动,发现问题解决,共享恢复,unc访问正常。
以下是技术资料,可以完全清除病毒:
这是一个叫w32.spybot.worm的病毒
W32.Spybot.Worm is a detection for a family of worms that spreads using KaZaA file-sharing and mIRC. This worm can also spread to computers infected with common back door Trojan horses.
W32.Spybot.Worm can perform different back door-type functions by connecting to a configurable IRC server and joining a specific channel to listen for instructions.
技术细节,这个病毒会干什么事呢?请看
W32.Spybot.Worm
Discovered on: April 16, 2003
Last Updated on: May 20, 2004 02:27:17 PM
W32.Spybot.Worm is a detection for a family of worms that spreads using KaZaA file-sharing and mIRC. This worm can also spread to computers infected with common back door Trojan horses.
W32.Spybot.Worm can perform different back door-type functions by connecting to a configurable IRC server and joining a specific channel to listen for instructions.
----------
Note: The October 8, 2003, virus definitions contain a modified W32.Spybot.Worm detection which accounts
for a minor variation discovered on October 7, 2003.
-----------------------------------------
Also Known As: Worm.P2P.SpyBot.gen [KAV], W32/Spybot-Fam [Sophos], W32/Spybot.worm.gen [McAfee], WORM_SPYBOT.GEN [Trend], Win32.Spybot.gen [CA]
Type: Worm
Infection Length: various
Systems Affected: Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Me
Systems Not Affected: Macintosh, OS/2, UNIX, Linux
Virus Definitions (Intelligent Updater) *
April 16, 2003
Virus Definitions (LiveUpdate™) **
April 16, 2003
*
Intelligent Updater definitions are released daily, but require manual download and installation.
Click here to download manually.
**
LiveUpdate virus definitions are usually released every Wednesday.
Click here for instructions on using LiveUpdate.
Wild:
Number of infections: More than 1000
Number of sites: More than 10
Geographical distribution: High
Threat containment: Easy
Removal: Moderate
Threat Metrics
Wild:
Medium
Damage:
Medium
Distribution:
Medium
Damage
Payload:
Releases confidential info: Sends personal data to an IRC channel.
Compromises security settings: Allows unauthorized commands to be executed on an infected machine.
Distribution
Shared drives: Spreads using the KaZaA file-sharing network, as well as spreading through mIRC.
When W32.Spybot.Worm is executed, it does the following:
Copies itself to the %System% folder.
-------------------------------------------------------------
Note: %System% is a variable. The worm locates the System folder and copies itself to that location.
By default, this is C:\Windows\System (Windows 95/98/Me), C:\Winnt\System32 (Windows NT/2000),
or C:\Windows\System32 (Windows XP).
----------------------------------------------------------------
如果是WINDOWS 2000系统,这个病毒会将自身复制在%SYSTEM%\SYSTEM32\下,
文件名就是wuamgrd.EXE,而且是系统,隐含属性。
文件名,图标与WINDOWS自动更新的客户端取的差不多,极易忽视。然后会在注册表中创建下列的键值
Can be configured to creates and share a folder on the KaZaA file-sharing network,
by adding the following registry value:
"dir0"="012345:<configurable path>"
to the registry key:
HKEY_CURRENT_USER\SOFTWARE\KAZAA\LocalContent
Copies itself to the configured path as file names that are designed to
trick other users into downloading and executing the worm.
Can be configured to perform Denial of Service (DoS) attacks on specified servers.
Can be configured to terminate security proct processes
Connects to specified IRC servers and joins a channel to receive commands.
One such command is to itself to many hard-coded Windows Startup Folders, such as the following:
Documents and Settings\All Users\Menu Start\Programma’s\Opstarten
WINDOWS\All Users\Start Menu\Programs\StartUp
WINNT\Profiles\All Users\Start Menu\Programs\Startup
WINDOWS\Start Menu\Programs\Startup
Documenti e Impostazioni\All Users\Start Menu\Programs\Startup
Dokumente und Einstellungen\All Users\Start Menu\Programs\Startup
Documents and Settings\All Users\Start Menu\Programs\Startup
----------------------------------------------------------------
Note: Symantec Security Response has received reports of variants of this worm creating zero-byte files in the Startup folder. These files may have file names such as TFTP780 or
TFTP###, where # can be any number.
-----------------主要会在下面的键值创建
Adds a variable registry value to one or more of the following registry keys:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersionRunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersionRunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
For example:
"Microsoft Update" = "wuamgrd.exe"
May log keystrokes to a file in the System folder.
May send personal information, such as the operating system, IP address, user name, and so on, to the IRC server.
May open a back-door port.
解决方法:
The following instructions pertain to all current and recent Symantec antivirus procts,
including the Symantec AntiVirus and Norton AntiVirus proct lines.
1.Disable System Restore (Windows Me/XP).
2.Update the virus definitions.
3.Restart the computer in Safe mode.
4.Run a full system scan, and delete all files that are detected as W32.Spybot.Worm.
Delete the value that was added to the registry.
Delete any zero-byte files in the Startup folder.
For specific details on each of these steps, read the following instructions
1. Disabling System Restore (Windows Me/XP)
If you are running Windows Me or Windows XP, we recommend that you temporarily
turn off System Restore. Windows Me/XP uses this feature, which is enabled by default,
to restore the files on your computer in case they become damaged. If a virus, worm, or
Trojan infects a computer, System Restore may back up the virus, worm, or Trojan on the computer.
Windows prevents outside programs, including antivirus programs, from modifying System Restore.
Therefore, antivirus programs or tools cannot remove threats in the System Restore folder.
As a result, System Restore has the potential of restoring an infected file on your computer,
even after you have cleaned the infected files from all the other locations.
Also, a virus scan may detect a threat in the System Restore folder even though you have removed the threat.
For instructions on how to turn off System Restore, read your Windows documentation or one of the following articles:
"How to disable or enable Windows Me System Restore"
"How to turn off or turn on Windows XP System Restore"
For additional information, and an alternative to disabling Windows Me System Restore,
see the Microsoft Knowledge Base article, "Antivirus Tools Cannot Clean Infected Files in the _Restore Folder,"
Article ID: Q263455.
2. Updating the virus definitions
Symantec Security Response fully tests all virus definitions for quality assurance before they are posted to our servers.
There are two ways to obtain the most recent virus definitions:
Running LiveUpdate, which is the easiest way to obtain virus definitions
These virus definitions are posted to the LiveUpdate servers once each week (usually on Wednesdays),
unless there is a major virus outbreak. To determine whether definitions for
this threat are available by LiveUpdate, refer to the Virus Definitions (LiveUpdate).
Downloading the definitions using the Intelligent Updater
The Intelligent Updater virus definitions are posted on U.S. business days (Monday through Friday).
You should download the definitions from the Symantec Security Response Web site and manually install them.
To determine whether definitions for this threat are available by the Intelligent Updater, refer to the
Virus Definitions (Intelligent Updater).
The Intelligent Updater virus definitions are available: Read "How to update virus definition files using the
Intelligent Updater" for detailed instructions.
3. Restarting the computer in Safe mode
Restart the computer in Safe mode. All the Windows 32-bit operating systems, except for Windows NT, can be restarted in Safe mode.
NOTE: The following instructions are basic and can vary slightly depending on the operating system.
If the computer is running, shut down Windows and then turn off the power.
Wait 30 seconds, and then turn on the computer.
Start tapping the F8 key.
When the Startup Menu appears, ensure that the Safe mode option is selected. In most cases, i
t is the first item in the list and is selected by default. (If it is not selected, use the arrow keys to select it.)
Press Enter. The computer will start in Safe mode. This can take a few minutes.
When you are finished with all the troubleshooting, close all the programs and restart the
computer as you normally would.
4. Scanning for and deleting the infected files
Start your Symantec antivirus program and make sure that it is configured to scan all the files.
For Norton AntiVirus consumer procts
Read the document "How to configure Norton AntiVirus to scan all files."
For Symantec AntiVirus Enterprise procts
Read the document "How to verify that a Symantec Corporate antivirus proct is set to scan all files."
Run a full system scan.
If any files are detected as infected with W32.Spybot.Worm, write down the file names, and then click Delete.
5. Deleting the value from the registry
WARNING: Symantec strongly recommends that you back up the registry before making any
changes to it. Incorrect changes to the registry can result in permanent data loss or corrupted files.
Modify the specified keys only. Read the document, "How to make a backup of the Windows registry,
" for instructions.
Click Start, and then click Run. (The Run dialog box appears.)
Type regedit
then click OK. (The Registry Editor opens.)
Navigate to the key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
In the right pane, delete any values that refer to the file name that was detected as infected with W32.Spybot.Worm.
Navigate to the following key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersionRunOnce
In the right pane, delete any values that reference the file name in step d.
Navigate to the following key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersionRunServices
In the right pane, delete any values that reference the file name in step d.
Navigate to the following key:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
In the right pane, delete any values that reference the file name in step d.
Exit the Registry Editor.
6. Delete the zero-byte files from the Startup folder
Follow the instructions for your version of Windows:
NOTE: There may be legitimate files on your system that start with "tftp." Delete only the zero-byte files from the Startup folder.
To delete zero-byte files in Windows 95/98/Me/NT/2000
On the Windows taskbar, click Start > Find (or Search) > Files or Folders.
Make sure that "Look in" is set to (C:) and that "Include subfolders" is checked.
In the "Named" or "Search for..." box, type--or and paste--the following file name:
tftp*.*
Click Find Now or Search Now.
Delete the files that are zero-bytes in size and contained within any folder whose name ends with "Startup".
To delete zero-byte files in Windows XP
On the Windows taskbar, click Start > Search.
Click "All files and folders."
In the "All or part of the file name" box, type--or and paste--the following file name:
tftp*.*
Verify that "Look in" is set to "Local Hard Drives" or to (C:).
Click "More advanced options."
Check "Search system folders."
Check "Search subfolders."
Click Search.
Delete the files that are zero-bytes in size and contained within any folder whose name ends with "Startup".
Revision History:
May 17, 2004: Added reference to possible registry key modification.
October 8, 2003: Added information regarding updated detection released in virus definitions on this day.
August 13, 2003: Updated removal instructions for Safe Mode.
August 7, 2003:
Upgraded from Category 1 to Category 2 e to increased prevalence.
Added information pertaining to the existence of 0-byte files in the StartUp folder.
按上面方法,清除后,解决问题,也能够共享文件,IPC$等几个默认共享也全部出现了。系统正常
㈤ Oracle事务提交
重新启动时,系统先REDO,然后对未提交的UNDO,数据在更新前的状态
㈥ 谁给我详细解释一下数据库中的事务提交吧。
事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作 这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行 事务是一个不可分割的工作逻辑单元 比如说银行操作转账,一个人的账号减100,另一个加100,如果提交两条语句某一条出错了,就会造成一个让无故增加100元,或一个无故减少100。所以作为一个整体提交,要么都成功,要么都失败。 触发器是在对表进行插入、更新或删于强除操作时自动执行的存储过程
触发器通常用制业务规则
触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束
可执行复杂的SQL语句(if/while/case)
可引用其它表中的列 触发器也就是 固定的业务逻辑比如一个员工退休,就会当该员工从员工表删除的时候将他自动插入退休员工表
㈦ 事务的提交和回滚是什么意思 Java
一组业务整体处理的行为叫一个事务。这一组的业务都能成功处理,我们就可以把这个事务提交来保存你已做的行为结果。但如果一组中有任何的差错出现的话,我们就认为这事务不成功,需要回滚来撤消之前的操作。举例:你去银行转账,转账我们有两步吧,从你账户中取出钱再往他账户中加钱。那这两步银行是必须要确保正确无误的进行的。要被看做成一个事务。其中任何一步出错就算是转账失败,但可能你这时是已经从你账户中扣了钱了,又没往他账户里加钱?怎么办算了?你不肯吧。所以银行会事务回滚,不保存你刚才的操作,即恢复到你没转账之前的状态。累啊
㈧ 数据库操作的时候,什么情况下需要用到事务
当数据库需要处理操作量大、复杂度高的数据的时候需要用到事务。用事务是为了保证数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:
1、为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
2、当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。
当事务被提交给了数据库管理系统,则数据库管理系统需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。
(8)访问其他系统提交事务扩展阅读:
数据库事务ACID性质:
1、原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
2、一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态,一致状态的含义是数据库中的数据应满足完整性约束。
3、隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
4、持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。
参考资料来源:
网络-数据库事务
网络-数据库
㈨ Oracle:如何以事物的方式对数据库进行访问
两次连续成功的COMMIT或ROLLBACK之间的操作,称为一个事务。在一个事务内,数据的修改一起提交或撤销,如果发生故障或系统错误,整个事务也会自动撤销。 一 事务的概念 事务是由相关操作构成的一个完整的操作单元。两次连续成功的COMMIT或ROLLBACK之间的操作,称为一个事务。在一个事务内,数据的修改一起提交或撤销,如果发生故障或系统错误,整个事务也会自动撤销。 oracle的数据语音分为数据定义语言(DDL)、数据控制语言(DCL)和数据操纵语言(DML)。其中的DML语言会生成事务,其他两种语言只要执行,事务就会结束。 简单的说DML语言可以建立事务,DDL和DCL不能建立事务。 DML语言包括几个命令,例如 select insert delete update等等,这些命令执行后,当前用户的显示信息是更改了,但是其他人访问你改的表的时候数据并没有更改,需要使用commit确认后才能更改。如果当前用户在没有执行commit前反悔操作了,那使用rollback命令可以回退到执行操纵语句之前,但是如果已经执行了commit语句是无法回退的。 比如,我们去银行转账,操作可以分为下面两个环节: (1) 从第一个账户划出款项。 (2) 将款项存入第二个账户。 在这个过程中,两个环节是关联的。第一个账户划出款项必须保证正确的存入第二个账户,如果第二个环节没有完成,整个的过程都应该取消,否则就会发生丢失款项的问题。整个交易过程,可以看作是一个事物,成功则全部成功,失败则需要全部撤消,这样可以避免当操作的中间环节出现问题时,产生数据不一致的问题。 一个事务是由一个可执行的SQL语句开始,一个可执行SQL语句产生对实例的调用。在事务开始时,被赋给一个可用回滚段,记录该事务的回滚项。一个事务以下列任何一个出现而结束。数据库事务是一个逻辑上的划分,有的时候并不是很明显,它可以是一个操作步骤,也可以是多个操作步骤。关键字: 分层查询 函数 触发器语法 Oracle物化视图 跟踪sql语句 内容摘要:事务是由相关操作构成的一个完整的操作单元。两次连续成功的COMMIT或ROLLBACK之间的操作,称为一个事务。在一个事务内,数据的修改一起提交或撤销,如果发生故障或系统错误,整个事务也会自动撤销。 我们可以这样理解数据库事物:对数据库所做的一系列修改,在修改过程中,暂时不写入数据库,而是缓存起来,用户在自己的终端可以预览变化,直到全部修改完成,并经过检查确认无误后,一次性提交并写入数据库,在提交之前,必要的话所做的修改都可以取消。提交之后,就不能撤销,提交成功后其他用户才可以通过查询浏览数据的变化。 以事务的方式对数据库进行访问,有如下的优点: * 把逻辑相关的操作分成了一个组。 * 在数据永久改变前,可以预览数据变化。 * 能够保证数据的读一致性。 二 数据库事务的应用 数据库事务处理可分为隐式和显式两种。显式事务操作通过命令实现,隐式事务由系统自动完成提交或撤销(回退)工作,无需用户的干预。 隐式提交的情况包括:当用户正常退出SQL*Plus或执行CREATE、DROP、GRANT、REVOKE等命令时会发生事务的自动提交。 还有一种情况,如果把系统的环境变量AUTOCOMMIT设置为ON(默认状态为OFF),则每当执行一条INSERT、DELETE或UPDATE命令对数据进行修改后,就会马上自动提交。设置命令格式如下: SET AUTOCOMMIT ON/OFF 隐式回退的情况包括:当异常结束SQL*Plus或系统故障发生时,会发生事务的自动回退。 显式事务处理的数据库事务操作语句有3条,分别是COMMIT,ROLLBACK,SAVEPOINT语句。 COMMIT是数据库事物提交,将变化写入数据库。此操作把多个步骤对数据库的修改,一次性地永久写入数据库,代表数据库事务的成功执行。ROLLBACK是数据库事务回退,撤销对数据库的修改。操作在发生问题时,把对数据库已经作出的修改撤消,回退到修改前的状态。在操作过程中,一旦发生问题,如果还没有提交操作,则随时可以使用ROLLBACK来撤消前面的操作。SAVEPOINT则用于在事务中间建立一些保存点,ROLLBACK可以使操作回退到这些点撤上边,而不必撤销全部的操作。一旦COMMIT完成,就不能用ROLLBACK来取消已经提交的操作。一旦ROLLBACK完成,被撤消的操作要重做,必须重新执行相关操作语句。 如何开始一个新的事务呢?一般情况下,开始一个会话(即连接数据库),执行第一条SQL语句将开始一个新的事务,或执行COMMIT提交或ROLLBACK撤销事务,也标志新的事务的开始。另外,执行DDL(如CREATE)或DCL命令也将自动提交前一个事务而开始一个新的事务。 数据在修改的时候会对记录进行锁定,其他会话不能对锁定的记录进行修改或加锁,只有当前会话提交或撤销后,记录的锁定才会释放。 例如修改雇员SCOTT的工资,工资在原有基础上增加1000: UPDATE emp SET sal=sal+1000 WHERE empno=7788; 执行结果: 已更新 1 行。 显示修改后SCOTT的工资: SELECT ename,sal FROM emp WHERE empno=7788; 执行结果: ENAME SAL SCOTT 4000 经查看修改结果正确,提交所做的修改: COMMIT; 执行结果: 提交完成。 在执行COMMIT后,工资的修改被永久写入数据库。本训练的第1步,先使用COMMIT命令提交原来的操作,同时标志一个新的事务的开始。注意:在事务执行过程中,随时可以预览数据的变化。
㈩ 事务完成最后一个操作后,该事务是否一定可以进入提交状态如果不是,数据库管理系统如何处理该事务
理论上来讲,完成最后一步后,一定可以提交。因为所有的操作已经在commit前做完,包含redo和undo数据,但是如果真的发生提交失败。该事务会回滚。