当前位置:编程学习 > C/C++ >>

ODBC 中 的 同 步 与 异 步执 行 模 式

 

 

---- 近 年 来, 随 着 计 算 机 局 域 网 技 术 的 不 断 发 展,计 算 机

 体 系 结 构 已 经 发 展 到 复 杂 而 开 放 的 客 户 机 / 服 务 器 模

式。 对 于 客 户 机 / 服 务 器 应 用 的 开 发, 目 前 常 用 的 前 端

开 发 工 具 有Visual Basic、Visual Foxpro、Delphi、PowerBuilder 等,

它 们 可 以 通 过ODBC 接 口 访 问 服 务 器 的SQL Server 数 据 库 服

务 器, 通 常 有 三 种 方 法( 本 文 以ODBC 2.0 为 例):

 

使 用 数 据 控 制 项;

 

使 用 数 据 库 对 象 变 量 进 行 编 程;

 

直 接 调 用ODBC 2.0 API。

---- ODBC 2.0 访 问 数 据 库 时 存 在 同 步 与 异 步 执行 模 式 之

分, 如 果 设 计 不 当, 则 易 发 生 系 统 故 障 甚 至 系 统 死 锁。 下

 面 笔 者 就 实 践 经 验, 针 对ODBC 2.0 的 同 步 与 异 步 执 行 模

式 谈 一 点 使 用 经 验 和 设 置 方 法, 欲 与 同 行 们 商 榷。

 

同 步 执 行 模 式 ---- 所 谓 同 步 执 行 模 式, 是 指 语 句在 同

步 执 行 模 式 下, 将 始 终 保 持 对 程 序 流 的 控 制, 直 至 程

序 结 束。 如 查 询 操 作, 客 户 机 上 的 应 用 程 序 在 向 服 务 器

发 出 查 询 操 作 的 指 令 后, 将 一 直 等 待 服 务 器 将 查 询 结

果 返 回 客 户 机 端, 然 后 才 继 续 进 行 下 一 步 操 作。

---- 众 所 周 知, 应 用 程 序 要 从 一 个 大 表 中 删 除 所有 的

记 录 将 是 非 常 耗 时 的, 如 果 应 用 程 序 采 用 的 是 单 线 程

(thread) 同 步 执 行 方 式, 某 次 删 除 工 作 很 可 能 耽误 其 他

重 要 工 作 的 完 成。 如 果 应 用 程 序 等 待 的 是 远 程 任 务,

那 么 远 程 服 务 器 失 败 或 网 络 故 障 或 一 些 无 法 预 知 的

情 况 都 可 能 使 应 用 程 序 无 限 期 地 等 下 去, 这 是 同 步

执 行 最 大 的 缺 陷。

 

 

---- 但 是 同 步 执 行 模 式 可 以 简 化 程 序 编 制 的 复杂 性。

 程 序 员 可 以 不 用 过 多 地 了 解 比 较 复 杂 的ODBC 2.0 API 的

使 用, 而 只 需 使 用ODBC 的 同 步 执 行 模 式 或 使 用 数据 控

制 项 和 数 据 库 对 象 变 量 来 编 写 应 用 程 序, 可 以 提 高

开 发 效 率, 但 程 序 运 行 速 度 比 不 上 异 步 执 行 模 式 的 速

 度。

 

异 步 执 行 模 式 ---- 所 谓 异 步 执 行 模 式, 是 指 语 句在 异

步 执 行 模 式 下, 各 语 句 执 行 结 束 的 顺 序 与 语 句 执 行 开

始 的 顺 序 并 不 一 定 相 同。 例 如 查 询 操 作, 客 户 机 上 的

应 用 程 序 在 向 服 务 器 发 出 了 查 询 操 作 的 指 令 后, 将 立

 刻 执 行 查 询 语 句 指 令 的 下 一 条 语 句, 而 不 需 要 等 到 服

务 器 将 查 询 结 果 返 回 客 户 机 端。

---- 异 步 执 行 方 式 使 应 用 程 序 能 摆 脱 单 个 任 务的 牵 制,

提 高 了 灵 活 性 和 应 用 程 序 的 执 行 效 率。 但 异 步 执 行 模

式 也 存 在 一 些 问 题, 如 它 增 加 了 编 程 的 复 杂 性, 特 别

是 编 写 互 用 性(interoperable) 要 求 较 高 的 程 序。

 

---- 在 负 荷 很 重 的 客 户 / 服 务 器 系 统 中, 适 宜 采用 异

步 执 行 模 式。 在 这 种 环 境 下, 时 间 延 迟 频 繁 且 漫 长,

相 比 之 下 异 步 执 行 的 开 销 微 不 足 道。 但 是, 如 果 应 用

运 行 的 环 境 比 较 复 杂, 则 必 须 建 立 一 套 完 整 的 机 制,

 周 期 性 地 检 查 函 数 执 行 的 状 态, 以 决 定 下 一 步 执 行

方 案。 进 行 周 期 的 检 查 可 以 有 多 种 方 法, 如 在 应 用 中

设 置 计 时 器 并 处 理WM_TIMER 信 息 等。

 

---- 虽 然 使 用 异 步 执 行 模 式 在 编 程 序 时 十 分 复杂, 但

可 以 实 现 多 任 务 并 行 执 行, 使 执 行 的 效 率 大 大 提 高。

 

选 择 并 设 置 执 行 模 式 ---- 在 应 用 程 序 开 发 中 选择 同 步

模 式 还 是 异 步 模 式, 是 一 个 比 较 复 杂 的 层 次。 当 查 询

或 对 数 据 库 的 修 改 相 对 简 单 时, 同 步 执 行 模 式 是 一 种

很 好 的 选 择, 它 能 够 在 几 秒 或 更 少 的 时 间 内 返 回 结 果

数 据。 另 外, 在 应 用 程 序 获 得 结 果 集 前 不 能 继 续 执 行

时, 根 本 不 必 要 使 用 异 步 执 行 模 式。 在 复 杂 查 询 情 况

下, 特 别 是 复 杂 的 多 行 数 据 库 的UPDATE 或DELETE 操 作, 可

能 需 要 很 长 的 时 间 才 能 完 成, 需 采 用 异 步 执 行 模 式,

让 用 户 可 以 同 时 对 程 序 的 其 他 部 分 进 行 操 作。

补充:软件开发 , C语言 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,