设为首页 加入收藏

TOP

ODBC 中 的 同 步 与 异 步执 行 模 式
2014-11-23 20:00:35 】 浏览:9420
Tags: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 操 作, 可

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

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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇用ADO进行数据库编程 下一篇多线程DAO处理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目