程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> ODBC 中 的 同 步 與 異 步執 行 模 式

ODBC 中 的 同 步 與 異 步執 行 模 式

編輯:關於C語言

 

 

---- 近 年 來, 隨 著 計 算 機 局 域 網 技 術 的 不 斷 發 展,計 算 機

 體 系 結 構 已 經 發 展 到 復 雜 而 開 放 的 客 戶 機 / 服 務 器 模

式。 對 於 客 戶 機 / 服 務 器 應 用 的 開 發, 目 前 常 用 的 前 端

開 發 工 具 有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 操 作, 可

能 需 要 很 長 的 時 間 才 能 完 成, 需 采 用 異 步 執 行 模 式,

讓 用 戶 可 以 同 時 對 程 序 的 其 他 部 分 進 行 操 作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved