DB2程式模型

flywiththewind發表於2018-01-20
 DB2 10.5 for Linux, UNIX, and Windows

DB2 程式技術模型

DB2? 過程模型的知識可幫助您瞭解資料庫管理器及其關聯元件如何互動。此知識可幫助您診斷可能發生的問題。

所有 DB2 資料庫伺服器使用的程式技術模型都旨在簡化資料庫伺服器與客戶機之間的通訊。它還確保資料庫應用程式獨立於資料庫控制塊和關鍵資料庫檔案之類的資源。

DB2 資料庫伺服器必須執行各種不同的任務,例如處理資料庫應用程式請求或確保將日誌記錄寫入磁碟。通常,每項任務都由一個獨立的引擎可分派單元 (EDU) 執行。

採用多執行緒體系結構對於 DB2 資料庫伺服器而言有很多優點。由於同一程式內的所有執行緒可以共享一些作業系統資源,因此,新執行緒需要的記憶體和作業系統資源比程式要少。此外,在某些平臺上,執行緒的上下文切換時間比程式短,這有助於提高效能。在所有平臺上使用執行緒模型使得 DB2 資料庫伺服器更易於配置,因為這樣更容易根據需要分配更多 EDU,並且可以動態分配必須由多個 EDU 共享的記憶體。

對於所訪問的每個資料庫,將啟動不同的 EDU 以處理各種資料庫任務,例如預取、通訊和日誌記錄。資料庫代理程式是一類特殊的 EDU,建立它們是為了處理應用程式對資料庫的請求。

通常,您可以依靠 DB2 資料庫伺服器來管理 EDU 集合。但是,也可以透過一些 DB2 工具來管理 EDU。例如,可以使用帶有 -edus 選項的 db2pd 命令來列示所有活動的 EDU 執行緒。

每個客戶機應用程式連線都有一個對資料庫執行操作的協調代理程式。協調代理程式代表應用程式工作,並根據需要使用專用記憶體、程式間通訊 (IPC) 或遠端通訊協議與其他代理程式進行通訊。

在 DB2 pureScale? 例項中時,這些程式用於監視在主機上執行的 DB2 成員和/或叢集快取記憶體設施 (CF) 的執行狀況以及將叢集狀態分發至例項中的所有 DB2 成員和 CF。

DB2 體系結構提供了一個防火牆,以使應用程式與 DB2 資料庫伺服器在不同的地址空間中執行 ()。防火牆將資料庫和資料庫管理器與應用程式、儲存過程和使用者定義的函式 (UDF) 隔開。此防火牆有助於維護資料庫中資料的完整性,這是因為,它將阻止應用程式程式設計錯誤覆蓋內部緩衝區或資料庫管理器檔案。此防火牆還提高了可靠性,原因是應用程式錯誤不會導致資料庫管理器崩潰。
圖 1. DB2 資料庫系統的程式技術模型
DB2 資料庫系統的程式技術模型的圖形表示

客戶機程式

客戶機程式可以是遠端程式,也可以是在資料庫伺服器所在機器上執行的本地程式。客戶機程式首先透過通訊偵聽器與資料庫聯絡。

偵聽器

通訊偵聽器在 DB2 資料庫伺服器啟動時啟動。每種已配置的通訊協議都有一個偵聽器,本地客戶機程式使用程式間通訊 (IPC) 偵聽器 (db2ipccm)。偵聽器包括:
  • db2ipccm,用於本地客戶機連線
  • db2tcpcm,用於 TCP/IP 連線
  • db2tcpdm,用於 TCP/IP 發現工具請求

代理程式

將為所有來自本地或遠端客戶機程式(應用程式)的連線請求分配相應的協調代理程式 (db2agent)。建立協調代理程式之後,它將代表該應用程式執行所有資料庫請求。

在分割槽資料庫環境或者已啟用查詢內並行性的系統中,協調代理程式會將資料庫請求分發給子代理程式(db2agntp 和 db2agnts)。與應用程式相關聯但當前處於空閒狀態的子代理程式名為 db2agnta

協調代理程式可能:
  • 已透過別名連線到資料庫;例如,db2agent (DATA1) 將連線到資料庫別名 DATA1。
  • 已連線到例項;例如 db2agent (user1) 將連線到例項 user1。

DB2 資料庫伺服器還會將其他型別的代理程式(例如獨立的協調代理程式或子協調代理程式)例項化,以便執行特定的操作。例如,獨立的協調代理程式 db2agnti 用於執行事件監視器,而子協調代理程式 db2agnsc 用於在異常關閉後以並行方式執行資料庫重新啟動操作。

閘道器代理程式 (db2agentg) 是一個與遠端資料庫相關聯的代理程式。它提供用於允許客戶機訪問主機資料庫的間接連線。

空閒代理程式駐留在代理程式池中。這些代理程式可用於處理來自代表客戶機程式執行的協調代理程式或來自代表現有協調代理程式執行的子代理程式的請求。當存在大量應用程式工作負載時,配備大小適當的空閒代理程式池有助於提高效能。在這種情況下,可以根據需要立即使用空閒代理程式,而不需要為每個應用程式連線分配新的代理程式,後一種情況涉及建立執行緒以及分配並初始化記憶體和其他資源。DB2 資料庫伺服器自動管理空閒代理池的大小。

可將合用代理程式關聯到遠端資料庫或本地資料庫。 在遠端資料庫上合用的代理程式稱為合用閘道器代理程式 (db2agntgp)。在本地資料庫上合用的代理程式稱為合用資料庫代理程式 (db2agentdp)。

db2fmp

受保護方式程式負責在防火牆外執行受防護的儲存過程和使用者定義的函式。db2fmp 程式始終是獨立的程式,但可能是多執行緒程式,這取決於它執行的例程的型別。

db2vend

db2vend 程式代表 EDU 執行供應商程式碼;例如,執行使用者出口程式以進行日誌歸檔(僅適用於 UNIX)。

資料庫 EDU

以下列表包括每個資料庫使用的一些重要 EDU:
  • db2pfchr,用於緩衝池預取程式
  • db2pclnr,用於緩衝池頁清除程式
  • db2dlock,用於死鎖檢測。在分割槽資料庫環境中,使用另一個執行緒 (db2glock) 來協調 db2dlock EDU 從每個分割槽中收集的資訊;db2glock 僅對目錄分割槽執行。在 DB2 pureScale 環境中,db2glock EDU 用於協調 db2dlockEDU 在每個成員上收集的資訊。db2glock EDU 在每個成員上啟動,但只有一個 EDU 處於活動狀態。
  • db2fw,事件監視器快速寫程式;用於對錶、檔案或管道進行事件監視器資料的大量、並行寫入。
    • db2fwx,事件監視器快速寫程式執行緒,其中“x”標識執行緒號。在資料庫啟用期間,DB2 引擎會將 db2fwx執行緒數設定為一個值,該值對於事件監視器效能最佳,並且會避免在執行不同型別的工作負載時發生潛在的效能問題。db2fwx 執行緒數目等於系統上邏輯 CPU 的數目(對於多核心 CPU,每個核心看作一個邏輯 CPU)。對於分割槽資料庫環境中的例項,衍生的 db2fwx 執行緒數等於每個資料庫的每個成員的邏輯 CPU 數除以主機上的本地分割槽數。
  • db2hadrp,高可用性災難恢復 (HADR) 主伺服器執行緒
  • db2hadrs,HADR 備用伺服器執行緒
  • db2lfr,用於處理各個日誌檔案的日誌檔案閱讀器
  • db2loggr,用於處理日誌檔案以處理事務處理和恢復
  • db2loggw,用於將日誌記錄寫入日誌檔案
  • db2logmgr,用於日誌管理器。管理可恢復資料庫的日誌檔案。
  • db2logts,用於跟蹤哪些表空間在哪些日誌檔案中有日誌記錄。此資訊記錄在資料庫目錄中的 DB2TSCHG.HIS 檔案中。
  • db2lragen,用於對新的中央伺服器執行緒模型生成日誌序號(如果定義了具有資料庫作用域的有效 XML 資源策略)。在很大的 NUMA 系統中,這可能會提高效能,並且產生很高的更新比率。
  • db2lused,用於更新物件用途
  • db2pcsd,用於程式包快取記憶體的自動清除
  • db2redom,用於重做主程式。在恢復期間,它處理重做日誌記錄並將日誌記錄指定給重做工作程式來進行處理。
  • db2redow,用於重做工作程式。在恢復期間,它按照重做主程式的請求來處理重做日誌記錄。
  • db2shred,用於處理日誌頁中的各個日誌記錄
  • db2stmm,用於自調整記憶體管理功能
  • db2taskd,用於分發後臺資料庫任務。這些任務由名為 db2taskp 的執行緒執行。
  • db2wlmd,用於自動收集工作負載管理統計資訊
  • 事件監視器執行緒的標識方式如下:
    • db2evm%1%2 (%3)
      其中,%1 可以是:
      • g - 全域性檔案事件監視器
      • gp - 全域性管道事件監視器
      • l - 本地檔案事件監視器
      • lp - 本地管道事件監視器
      • t - 表事件監視器
      %2 可以是:
      • i - 協調程式
      • p - 不是協調程式
      而 %3 是事件監視器名稱
  • 備份和復原執行緒的標識方式如下:
    • db2bm.%1.%2(備份和復原緩衝區操縱程式)和 db2med.%1.%2(備份和復原介質控制器),其中:
      • %1 是用於控制備份或復原會話的代理程式的 EDU 標識
      • %2 是用於區分屬於特定備份或復原會話的執行緒(可能有許多個)的順序值
      例如:db2bm.13579.2 標識具有 EDU 標識為 13579 的 db2agent 執行緒控制的第二個 db2bm 執行緒。
  • 以下資料庫 EDU 用於在 DB2 pureScale 環境中鎖定:
    • db2LLMn1,用於處理全域性鎖定管理器傳送的資訊;每個成員上有其中兩個 EDU;一個用於主 CF,另一個用於輔助 CF
    • db2LLMn2,用於處理全域性鎖定管理器為資料庫啟用和取消啟用期間使用的特別鎖定型別傳送的資訊;每個成員上有其中兩個 EDU,一個用於主 CF,另一個用於輔助 CF
    • db2LLMng,用於確保此成員掛起的鎖定及時釋放(如果其他成員在等待這些鎖定)
    • db2LLMrl,用於處理全域性鎖定管理器的鎖定的釋放
    • db2LLMrc,用於處理資料庫恢復操作及 CF 恢復期間發生的處理

資料庫伺服器執行緒和程式

系統控制器(在 UNIX 上為 db2sysc,在 Windows 作業系統上為 db2syscs.exe)必須存在,這樣資料庫伺服器才能工作。以下執行緒和程式執行各種任務:
  • db2acd,用於主管執行狀況監視器、自動維護實用程式和管理任務排程程式的自主計算守護程式。此程式以前稱為 db2hmon
  • db2aiothr,用於管理資料庫分割槽的非同步 I/O 請求(僅適用於 UNIX)
  • db2alarm,用於在他們請求的計時器到期時通知 EDU(僅適用於 UNIX)
  • db2disp,客戶機連線集中器分派器
  • db2fcms,快速通訊管理器傳送方守護程式
  • db2fcmr,快速通訊管理器接收方守護程式
  • db2fmd,故障監視器守護程式
  • db2licc,管理已安裝的 DB2 許可證
  • db2panic,應急啟動代理程式,用於在達到代理程式限制後處理緊急請求。
  • db2pdbc,並行系統控制器,用來處理來自遠端資料庫分割槽的並行請求(僅用於分割槽資料庫環境)
  • db2resync,掃描全域性再同步列表的再同步代理程式
  • db2rocm 和 db2rocme,在 DB2 pureScale 例項中,這些程式監視在每個主機上執行的 DB2 成員和叢集快取記憶體設施 (CF) 的操作狀態,並將叢集狀態資訊分發至該例項中的所有 DB2 成員和 CF。
  • db2sysc,主系統控制器 EDU;它處理關鍵的 DB2 伺服器事件
  • db2sysc(空閒),DB2 空閒程式,它們允許在主機上快速輕量級重新啟動訪客成員並且不必與常駐成員競爭資源。
  • db2thcln,在 EDU 終止時重新啟動資源(僅適用於 UNIX)
  • db2wdog,在 UNIX 和 Linux 作業系統上處理異常終止的看守程式
  • db2wlmt,WLM 分派器排程執行緒
  • db2wlmtm,WLM 分派器計時器執行緒
 概念主題
(  )

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26224914/viewspace-2150341/,如需轉載,請註明出處,否則將追究法律責任。

相關文章