---- 近 年 來, 隨 著 計 算 機 局 域 網 技 術 的 不 斷 發 展,計 算 機
體 系 結 構 已 經 發 展 到 復 雜 而 開 放 的 客 戶 機 / 服 務 器 模
式。 對 於 客 戶 機 / 服 務 器 應 用 的 開 發, 目 前 常 用 的 前 端
開 發 工 具 有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 操 作, 可
能 需 要 很 長 的 時 間 才 能 完 成, 需 采 用 異 步 執 行 模 式,
讓 用 戶 可 以 同 時 對 程 序 的 其 他 部 分 進 行 操 作。