程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2的代理和連接集中器

DB2的代理和連接集中器

編輯:DB2教程

本文為您介紹了DB2 Universal Database代理的概念以及工作原理,連接集中器的概念及特性,並對DB2 連接上常見的問題及代理的優化作了詳細的分析。供您參考,希望對您有所幫助。

DB2 的代理 (agent) 是位於 DB2 服務器中的服務於應用程序請求的一些進程或線程。當有外部應用程序連接至 DB2 實例提出訪問請求時,DB2 的代理就會被激活去應答這些請求。一般 DB2 的代理被稱為工作代理,工作代理大概有三種類型:空閒代理、活動的協調代理、子代理。

◆空閒代理:指的是沒有任何任務的代理。這種代理不服務於任何遠程連接也不服務於本地連接,處於一種備用或待命狀態。

◆活動的協調代理:指的是處於工作狀態的代理,每一個外部應用程序產生的數據庫活動連接的都有一個活動協調代理來為它服務。

◆子代理:指的是接受協調代理分發出來的工作的下一級代理。在 DB2 V95 以前,只有在多分區環境 (MPP) 或節點內並行環境 (SMP) 下才存在子代理,在 DB2 V95 中所有環境中都可能存在子代理。

在 DB2 服務器中有一個代理池,當實例剛啟動後這裡便有一些代理(其數量取決於實例參數 NUM_INITAGENTS)。在沒有任何數據庫連接時,它們處於待命狀態,就是空閒代理。而當有外部程序連接至數據庫時,這些代理開始得到命令去服務於這些新建的連接,這時它們就變成了活動的協調代理。這些協調代理再將請求逐步細分,分配給下一級代理即子代理去處理。如果當前的代理都已經在工作了,同時又來了新的請求,數據庫管理器會產生一個新的代理去應答。當事務處理完畢而且數據庫連接斷開後,協調代理要麼返回代理池變回空閒代理,要麼就自動消失了(取決於實例參數 NUM_POOLAGENTS)。這就是一個代理的生命周期。

相關的配置參數

通過執行 DB2 get dbm cfg 可以看到以下幾個和代理相關的實例參數:MAXAGENTS,NUM_POOLAGENTS,NUM_INITAGENTS,MAX_COORDAGENTS,MAX_CONNECTIONS,MAXCAGENTS。下面對它們做一下簡要介紹:

◆MAXAGENTS:這個參數為當前實例中全部代理的數量,包括協調代理,空閒代理和子代理之和。不過這個參數在 DB2 V95 中已經不再使用了。

◆NUM_POOLAGENTS:這個參數用來控制代理池中的空閒代理的數量。當活動的代理完成工作返回代理池變成空閒代理時,如果數量超過了這個參數,那麼這個代理就會自動消失了。注意:在連接集中器激活的情況下,代理池中的空閒代理數目在某一時刻可能會超過 NUM_POOLAGENTS 的大小,以應對突發的高密度連接。

◆NUM_INITAGENTS:這個參數就是前面提到的在實例剛剛啟動時便生成的一些空閒代理的數目。這是為了提高性能,因為這些代理可以隨時變成協調代理去應答外部應用請求,而不用臨時再生成新的代理。

◆MAX_COORDAGENTS:這個參數決定了在實例中在同一時刻最大的協調代理的數目 ( 在多分區環境指的是一個節點上的最大協調代理數 )。

◆MAX_CONNECTIONS:這個參數決定了允許連接至一個實例的最大的連接數 ( 在多分區環境指的是一個節點上的最大連接數 )。

◆MAXCAGENT:這個參數決定了實例中的令牌的數量,一個協調代理只有得到了令牌才能去服務於應用程序。當沒有得到令牌時,協調代理只能等候。不過這個參數在 DB2 V95 中也已經取消了。

還有一個連接參數 MAXAPPLS 可以通過 db2 get db cfg for database_name 得到,它是一個數據庫級別的參數,這個參數決定了同時連接至一個數據庫的最大連接數。在一個實例下的所有數據庫的 MAXAPPLS 值之和不能超過實例參數 MAX_CONNECTIONS。

連接集中器

基本原理

從 DB2 V8 開始,DB2 實例中有一個叫做連接集中器的特性,可以用來優化數據庫的連接。缺省情況下,在實例創建的時候,MAX_CONNECTIONS 與 MAX_COORDAGENTS 的值是一致的。這個時候每一個協調代理唯一地服務於一個連接。比如說有 1000 個連接就要有 1000 個協調代理為之服務。這對服務器是一個很大的負擔,因為每一個代理都要消耗一定的資源。而當我們將 MAX_CONNECTIONS 的值設定的比 MAX_COORDAGENTS 大,這時 DB2 的連接集中器就被激活了。它允許多個連接對應於一個代理。

連接集中器的功能與 DB2 CONNECT 中的連接池相似。不過連接集中器比連接池的優點在於它能夠重用外部連接,即多個排隊的應用程序可以重復使用一個存在的連接,而連接池則需要先刪除再重建一個連接去服務於一個新的應用程序。在連接集中器中每個協調代理並不唯一地服務於一個連接,當某個外部連接斷開後,協調代理被分配給其他連接。這樣。同時允許更多的連接連到數據庫,並且減少了每個連接的內存消耗,避免了頻繁的刪除和創建代理所帶來的系統開銷。下面是連接集中器的具體工作原理:

首先將 MAX_CONNECTIONS 的值設定的大於 MAX_COORDAGENTS 去激活連接集中器。在連接集中器中代理被分成邏輯代理和工作代理。邏輯代理與外部應用程序對應,它並不對應與某個特定的引擎分配單元 (EDU)。工作代理和前面定義的一樣,是具體的引擎分配單元。當邏輯代理多於工作代理時連接集中器就被激活了。當有多個連接同時連接到服務器時,連接被一一分配給各個邏輯代理。邏輯代理再去請求工作代理的服務。

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