IBM DB2連接集中器的基本操作原理
以下的文章主要描述的是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連接集中器的介紹,望你能有所收獲。
【編輯推薦】