DB2進程模型

瞭解DB2®過程模型能夠幫助您肯定問題的性質,由於它能夠幫助您瞭解數據庫管理器及其關聯組件如何進行交互。數據庫

全部DB2數據庫服務器使用的過程模型有助於數據庫服務器與客戶端和本地應用程序之間的通訊。它還確保數據庫應用程序與資源(如數據庫控制塊和關鍵數據庫文件)隔離。編程

DB2數據庫服務器必須執行許多不一樣的任務,例如處理數據庫應用程序請求或確保將日誌記錄寫入磁盤。每一個任務一般由單獨的引擎可分派單元(EDU)執行。在之前的版本中,大多數EDU都是在Linux和UNIX環境中使用單獨的進程實現的,並在Windows中的主DB2數據庫服務器進程中使用操做系統線程。從版本9.5開始,Linux和UNIX環境上的DB2數據庫服務器如今也是線程化的,所以EDU如今使用UNIX和Windows上的操做系統線程來實現。服務器

在DB2數據庫服務器中使用多線程體系結構有許多好處。與進程相比,新線程須要更少的內存和操做系統資源,由於某些操做系統資源能夠在同一進程內的全部線程之間共享。另外,在某些平臺上,線程的上下文切換時間比進程要便宜,這能夠提升性能。但最重要的是,在全部平臺上使用線程模型使得DB2數據庫服務器更易於配置,由於根據須要分配更多EDU更爲簡單,而且能夠動態分配須要由多個EDU共享的內存(在基於過程的模型,一個EDU沒法看到從另外一個EDU分配的內存)。多線程

在之前的版本中,在Linux和UNIX系統上,可使用ps system命令或db2_local_ps命令列出全部活動的DB2 EDU。從版本9.5開始,這些命令將再也不列出db2sysc進程中的任何EDU線程。或者,您如今可使用帶有-edus選項的db2pd命令列出全部處於活動狀態的EDU線程。該命令可在UNIX和Windows系統上使用。dom

對於每一個要訪問的數據庫,將啓動各類EDU來處理各類數據庫任務,如預取,通訊和日誌記錄。數據庫代理是建立用於處理數據庫的應用程序請求的一類特殊EDU。異步

每一個客戶端應用程序鏈接都有一個在數據庫上運行的協調代理程序。協調員代理程序表明應用程序工做,並根據須要使用專用內存,進程間通訊(IPC)或遠程通訊協議與其餘代理程序通訊。tcp

DB2體系結構提供防火牆,以便應用程序能夠在與DB2不一樣的地址空間中運行。防火牆保護數據庫和數據庫管理器免受應用程序,存儲過程和用戶定義函數(UDF)的影響。防火牆維護數據庫中數據的完整性,由於它能夠經過覆蓋數據庫管理器的內部緩衝區或文件來禁用應用程序編程錯誤。防火牆還提升了可靠性,由於應用程序錯誤不會致使數據庫管理器崩潰。ide

客戶端程序函數

客戶端程序遠程運行或與數據庫服務器在同一臺計算機上運行。他們經過一個監聽器與數據庫進行首次聯繫。而後將協調員代理(db2agent)分配給它們。工具

聽衆

客戶端程序與通訊偵聽器進行初步聯繫,通訊偵聽器在DB2啓動時啓動。每一個配置的通訊協議都有一個監聽程序,而且爲本地客戶機程序提供進程間通訊(IPC)監聽程序(db2ipccm)。聽衆包括:

db2ipccm,用於本地客戶端鏈接

db2tcpcm,用於TCP / IP鏈接

db2tcpdm,用於TCP / IP發現工具請求

代理

來自客戶端應用程序的全部鏈接請求(不管是本地仍是遠程)都分配了相應的協調員代理(db2agent)。協調員代理程序建立後,它將表明應用程序執行全部數據庫請求。

在啓用分區數據庫環境的環境中或啓用了查詢內並行性的環境中,協調程序代理將分發數據庫請求給子代理(分別爲db2agntp和db2agnts)。這些代理爲應用程序執行請求。建立協調員代理後,它將經過協調對數據庫執行請求的子代理(db2agntp)來表明其應用程序處理全部數據庫請求。與應用程序關聯但當前空閒的子代理由名稱db2agnta標識。

協調員代理能夠是:

用別名鏈接到數據庫。例如,「db2agent(DATA1)」鏈接到數據庫別名「DATA1」。

附加到一個實例。例如,「db2agent(user1)」附加到實例「user1」。

DB2進程模型將實例化其餘類型的代理以執行特定的操做,例如獨立協調器代理或次協調器代理。例如,獨立協調員代理db2agnti用於運行事件監視器,而次協調器代理db2agnsc用於在忽然關閉後並行執行數據庫的從新啓動。

網關代理(db2agentg)是與遠程數據庫關聯的代理。它提供容許客戶端訪問主機數據庫的間接鏈接。

空閒代理駐留在代理池中。這些代理可用於來自表明客戶程序運行的協調員代理的請求或表明現有協調員代理運行的子代理的請求。具備適當大小的空閒代理池可幫助具備重大應用程序工做負載的配置中的性能,由於空閒代理能夠根據須要當即使用,而沒必要爲每一個應用程序鏈接分配一個全新的代理,這涉及到建立線程和分配並初始化內存和其餘資源。從版本9.5開始,若是須要,DB2還能夠自動管理空閒代理池的大小。

池化代理能夠關聯到遠程數據庫或本地數據庫。集中在遠程數據庫上的代理被稱爲池式網關代理(db2agntgp)。集中在本地數據庫上的代理被稱爲池式數據庫代理(db2agentdp)。

的db2fmp

防禦模式進程。它負責在防火牆外執行防禦存儲過程和用戶定義的功能。所述的db2fmp過程始終是獨立的過程,但能夠根據類型它執行的例程的是多線程。

db2vend

這是表明EDU執行供應商代碼的過程,例如執行用於日誌歸檔的用戶出口程序(僅限UNIX)。

數據庫EDU

如下列表包括每一個數據庫使用的一些重要EDU:

db2pfchr,用於緩衝池預取程序。

db2pclnr,用於緩衝池頁面清理器。

db2loggr,用於處理日誌文件以處理事務處理和恢復。

db2loggw,用於將日誌記錄寫入日誌文件。

db2logts跟蹤哪些表空間具備日誌文件的日誌記錄。該信息記錄在數據庫目錄中的DB2TSCHG.HIS文件中。它用於加速表空間前滾恢復的前進階段。

db2dlock,用於死鎖檢測。在多分區數據庫環境中,使用名爲db2glock的附加線程來協調從每一個分區上的db2dlock EDU 收集的信息。db2glock只在目錄分區上運行。

db2stmm,用於自調整內存功能。

db2taskd,用於分配後臺數據庫任務。這些任務由稱爲db2taskp的線程執行。

db2hadrp,HADR主服務器線程。

db2hadrs,HADR備用服務器線程。

db2lfr,用於處理單個日誌文件的日誌文件讀取器。

db2shred處理日誌頁面中的各個日誌記錄。

db2redom,用於重作主數據庫。在恢復過程當中,處理重作日誌記錄並分配日誌記錄以重作工做人員進行處理。

db2redow,用於重作工做者。在恢復期間,應重作主機的請求處理重作日誌記錄。

db2logmgr,用於日誌管理器。管理可恢復數據庫的日誌文件

db2wlmd,用於自動收集工做負載管理統計信息。

事件監視器線程標識以下:

db2evm %1 %2(%3)其中%1能夠是

g - 全局文件事件監視器

l - 本地文件事件監視器

t - 表事件監視器

gp - 全球管道事件監視器

lp - 本地管道事件監視器

其中%2能夠是

我 - 協調員

p - 不是協調員

而%3是事件監視器名稱

備份和恢復線程標識以下:

db2bm。%1。%2備份和恢復緩衝區操縱器,以及db2med。%1。%2,備份和恢復介質控制器,其中

%1 - 控制備份或恢復會話的代理的EDU ID

%2 - 用於在屬於特定備份或恢復會話的(可能不少)線程之間消除歧義的順序值

例如: db2bm.13579.2標識由具備EDU ID 13579 的db2agent線程控制的第二個db2bm線程。

數據庫服務器線程和進程

系統控制器(UNIX 上的db2sysc,Windows 上的db2syscs.exe)必須存在才能使數據庫服務器正常工做。此外,可能會開始執行如下線程和進程來執行各類任務:

db2resync,掃描全局從新同步列表的resync代理

db2wdog,處理異常終止的UNIX和Linux操做系統上的看門狗

db2fcms,快速通訊管理器發件人守護程序

db2fcmr,快速通訊管理器接收器守護進程

db2pdbc是並行系統控制器,它處理來自遠程節點的並行請求(僅在分區數據庫環境中使用)。

db2cart,用於在訪問配置了USEREXIT的數據庫時對日誌文件進行歸檔

用於格式化日誌文件的db2fmtlg,當訪問配置了LOGRETAIN但已禁用USEREXIT的數據庫時

db2panic,恐慌代理,它在處理了代理限制後處理緊急請求

db2fmd,故障監視器守護進程

db2disp,客戶端鏈接集中器調度程序

db2acd,託管健康監視器的自主計算守護程序,自動維護實用程序和管理任務調度程序。這個過程之前稱爲db2hmon。

db2licc管理已安裝的DB2許可證

db2thcln,在EDU終止時回收資源(僅限UNIX)

db2aiothr管理數據庫分區的異步I / O請求(僅限UNIX)

db2alarm在請求的計時器到期時通知EDU(僅限UNIX)

主系統控制器EDU的db2sysc處理關鍵的DB2數據庫服務器事件

相關文章
相關標籤/搜索