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