以下的文章主要描述的是IBM DB2連接集中器的基本操作原理,如果你對IBM DB2連接集中器的基本操作原理心存好奇的話,以下的文章將會揭開它的神秘面紗,以下就是文章的詳細內容介紹,望大家借鑒。
1. 基本原理
從 DB2 V8 開始,DB2 實例中有一個叫做IBM DB2連接集中器的特性,可以用來優化數據庫的連接。缺省情況下,在實例創建的時候,MAX_CONNECTIONS 與 MAX_COORDAGENTS 的值是一致的。這個時候每一個協調代理唯一地服務於一個連接。
比如說有 1000 個連接就要有 1000 個協調代理為之服務。這對服務器是一個很大的負擔,因為每一個代理都要消耗一定的資源。而當我們將 MAX_CONNECTIONS 的值設定的比 MAX_COORDAGENTS 大,這時 DB2 的連接集中器就被激活了。它允許多個連接對應於一個代理。
連接集中器的功能與 DB2 CONNECT 中的連接池相似。不過IBM DB2連接集中器比連接池的優點在於它能夠重用外部連接,即多個排隊的應用程序可以重復使用一個存在的連接,而連接池則需要先刪除再重建一個連接去服務於一個新的應用程序。
在連接集中器中每個協調代理並不唯一地服務於一個連接,當某個外部連接斷開後,協調代理被分配給其他連接。這樣。同時允許更多的連接連到數據庫,並且減少了每個連接的內存消耗,避免了頻繁的刪除和創建代理所帶來的系統開銷。下面是連接集中器的具體工作原理:
首先將 MAX_CONNECTIONS 的值設定的大於 MAX_COORDAGENTS 去激活連接集中器。在連接集中器中代理被分成邏輯代理和工作代理。邏輯代理與外部應用程序對應,它並不對應與某個特定的引擎分配單元 (EDU)。工作代理和前面定義的一樣,是具體的引擎分配單元。當邏輯代理多於工作代理時IBM DB2連接集中器就被激活了。當有多個連接同時連接到服務器時,連接被一一分配給各個邏輯代理。邏輯代理再去請求工作代理的服務。
比方說,代理池是一個飯店,在飯店裡通常都是顧客多於服務員。剛開始,還沒有顧客 ( 相當於外部應用 ) 的時候。有一些值班的服務員在飯店裡待命(相當於實例啟動時在代理池中創建的空閒代理 NUM_INITAGENTS)。一旦來了應用請求(顧客),調度程序(相當於領班)就去安排服務員開始工作,服務員就開始忙起來去招呼顧客。這時服務員的角色相當於協調代理。
她們接待完顧客後便將菜單傳達給廚師和小工 ( 相當於子代理 )。而當顧客越來越多,超過了最初的值班服務員數量。服務器就生成新的代理來服務於這些應用,就好像是從員工宿捨叫來更多的服務員來工作。當在場服務員數達到了一個數目 (MAX_COORDAGENTS),飯店的所有服務員都在工作了,沒有其他的在編服務員了。
這時新來的顧客 ( 外部應用 ) 只能坐在座位上等候了。MAX_CONNECTIONS 在這裡相當於飯店裡的總的就餐座位數,當顧客數目 ( 外部應用 ) 達到了這個數值,後來的顧客只能離去了(相當於連不上數據庫)。
這裡需要注意的是 MAX_CONNECTIONS 並不是指同時連在實例上的活動的連接,因為有些連接即使連在實例上了,也要等候協調代理服務,當前活動的連接數與活動的協調代理數相等。當一個協調代理處理完一個應用程序後,它會被分配給其它等候的應用,相當於服務員去服務於其他等待著的顧客。
在飯店中還有一些座位是專門為服務員休息准備的 ( 這個座位數相當於 NUM_POOLAGENTS)。當顧客漸漸散去,越來越少的時候,部分服務員 ( 協調代理 ) 已經無事可做,就返回這些座位(變成空閒代理)。當這些座位也被占滿了,那麼再有服務員 ( 協調代理 ) 返回休息時,就沒有可供休息的座位了 ( 假設服務員不能坐就餐座位 )。
這些服務員就只有返回員工宿捨了 ( 相當於代理的刪除 )
以上的相關內容就是對IBM DB2連接集中器的介紹,望你能有所收獲。