国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種數(shù)據(jù)庫(kù)連接資源的管理方法

      文檔序號(hào):6513847閱讀:393來源:國(guó)知局
      專利名稱:一種數(shù)據(jù)庫(kù)連接資源的管理方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)庫(kù)訪問技術(shù),特別涉及數(shù)據(jù)庫(kù)連接資源的管理方法。
      背景技術(shù)
      隨著計(jì)算機(jī)技術(shù)的發(fā)展,數(shù)據(jù)管理的規(guī)模越來越大,不僅數(shù)據(jù)量急劇增加,數(shù)據(jù)共享的要求也越來越高,于是出現(xiàn)了數(shù)據(jù)庫(kù)系統(tǒng)用于對(duì)所有數(shù)據(jù)實(shí)行統(tǒng)一、集中、獨(dú)立的管理,使數(shù)據(jù)存儲(chǔ)獨(dú)立于使用數(shù)據(jù)的程序,實(shí)現(xiàn)數(shù)據(jù)共享。
      目前,大型中央數(shù)據(jù)庫(kù)系統(tǒng)在許多領(lǐng)域,尤其是通信領(lǐng)域,得到了廣泛應(yīng)用。這種大型數(shù)據(jù)庫(kù)系統(tǒng)需要并行處理多個(gè)業(yè)務(wù)進(jìn)程的訪問,并為各業(yè)務(wù)進(jìn)程的訪問分配數(shù)據(jù)庫(kù)連接資源,如何保證大量在線事務(wù)處理(OLTP)并發(fā)的情況下數(shù)據(jù)庫(kù)系統(tǒng)的高效運(yùn)行、以及數(shù)據(jù)的一致性和安全性,成為數(shù)據(jù)庫(kù)連接資源管理技術(shù)主要解決的問題。
      所述數(shù)據(jù)庫(kù)系統(tǒng)至少包括數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)和物理的數(shù)據(jù)庫(kù)(DataBase),以及作為支撐的計(jì)算機(jī)軟/硬件系統(tǒng)。其中,DBMS負(fù)責(zé)接收業(yè)務(wù)進(jìn)程的訪問請(qǐng)求,為業(yè)務(wù)進(jìn)程建立數(shù)據(jù)庫(kù)連接,并根據(jù)該業(yè)務(wù)進(jìn)程的訪問需求通過數(shù)據(jù)庫(kù)連接對(duì)DataBase進(jìn)行操作,比如讀取、寫入、刪除數(shù)據(jù)庫(kù)記錄等。在業(yè)務(wù)進(jìn)程訪問數(shù)據(jù)庫(kù)時(shí),每個(gè)業(yè)務(wù)進(jìn)程將獨(dú)占一條數(shù)據(jù)庫(kù)連接,這樣對(duì)于大量業(yè)務(wù)進(jìn)程并發(fā)訪問的數(shù)據(jù)庫(kù)系統(tǒng)來講,系統(tǒng)的響應(yīng)時(shí)間將過長(zhǎng),很難保證良好的數(shù)據(jù)庫(kù)系統(tǒng)性能。因此,在大量業(yè)務(wù)進(jìn)程并發(fā)訪問的數(shù)據(jù)庫(kù)系統(tǒng)中,還設(shè)置了用于對(duì)數(shù)據(jù)庫(kù)連接資源進(jìn)行管理的數(shù)據(jù)庫(kù)連接池。
      所述數(shù)據(jù)庫(kù)連接池,在系統(tǒng)初始化時(shí),根據(jù)配置文件確定向DBMS申請(qǐng)建立數(shù)據(jù)庫(kù)連接的數(shù)目,并將所建立的每個(gè)數(shù)據(jù)庫(kù)連接封裝成連接對(duì)象。當(dāng)用戶的應(yīng)用流程訪問數(shù)據(jù)庫(kù)時(shí),系統(tǒng)首先將應(yīng)用流程隨機(jī)分配至某個(gè)業(yè)務(wù)進(jìn)程,再由業(yè)務(wù)進(jìn)程訪問數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)連接池將為業(yè)務(wù)進(jìn)程的每一次訪問分配連接對(duì)象。每個(gè)業(yè)務(wù)進(jìn)程可以由多個(gè)應(yīng)用流程共享,每個(gè)連接對(duì)象可以由多個(gè)業(yè)務(wù)進(jìn)程共享,這樣,數(shù)據(jù)庫(kù)的連接資源不再被單個(gè)業(yè)務(wù)進(jìn)程的訪問獨(dú)占,從而能夠充分利用系統(tǒng)資源訪問數(shù)據(jù)庫(kù)。也就是說連接對(duì)象與多個(gè)業(yè)務(wù)進(jìn)程的訪問建立多個(gè)軟連接,每個(gè)連接對(duì)象與數(shù)據(jù)庫(kù)之間建立一個(gè)硬連接,該多個(gè)業(yè)務(wù)進(jìn)程的訪問共享連接對(duì)象與數(shù)據(jù)庫(kù)之間的硬連接來訪問數(shù)據(jù)庫(kù)。但是,當(dāng)多個(gè)應(yīng)用流程各自通過不同業(yè)務(wù)進(jìn)程并使用不同的連接對(duì)象訪問數(shù)據(jù)庫(kù)時(shí),如果該多個(gè)應(yīng)用流程之間存在一定的邏輯關(guān)系,就可能出現(xiàn)污讀現(xiàn)象。
      下面結(jié)合圖1對(duì)現(xiàn)有多業(yè)務(wù)進(jìn)程訪問數(shù)據(jù)庫(kù)出現(xiàn)的問題加以詳細(xì)說明。圖1為現(xiàn)有技術(shù)數(shù)據(jù)庫(kù)連接資源分配情況示意圖。如圖1所示,業(yè)務(wù)進(jìn)程通過數(shù)據(jù)庫(kù)連接池與DBMS通信,由DBMS根據(jù)業(yè)務(wù)進(jìn)程的訪問請(qǐng)求對(duì)DataBase進(jìn)行操作。其中,當(dāng)前進(jìn)行訪問的用戶包括用戶1、用戶2、用戶3;業(yè)務(wù)進(jìn)程有N個(gè)用戶1的流程A和用戶2的流程B被分配到業(yè)務(wù)進(jìn)程1,用戶1的流程B和用戶2的流程A被分配到業(yè)務(wù)進(jìn)程2,......,用戶3的流程A和流程B被分配到業(yè)務(wù)進(jìn)程N(yùn);數(shù)據(jù)庫(kù)連接池中建立了M個(gè)連接對(duì)象,即數(shù)據(jù)庫(kù)連接池通過DBMS與DataBase建立了M個(gè)數(shù)據(jù)庫(kù)硬連接。應(yīng)用流程每次通過業(yè)務(wù)進(jìn)程訪問數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)連接池將為該業(yè)務(wù)進(jìn)程隨機(jī)分配一個(gè)連接對(duì)象,即建立數(shù)據(jù)庫(kù)軟連接。圖1中,數(shù)據(jù)庫(kù)連接池為用戶1的流程A和流程B、用戶2的流程B的訪問分配連接對(duì)象1,并分別建立連接1、連接2和連接3;為用戶2的流程A、用戶3的流程A和流程B分配連接對(duì)象2,并分別建立連接4、連接5和連接6。
      其中,用戶2的流程A和流程B的訪問對(duì)應(yīng)的是不同的連接對(duì)象,這樣如果該流程A與流程B之間存在一定的邏輯關(guān)系,用戶2訪問數(shù)據(jù)庫(kù)時(shí)可能出現(xiàn)污讀。以無線通訊領(lǐng)域的歸屬位移寄存器(HLR)設(shè)備為例,該設(shè)備需要處理的消息流程有多種,而且對(duì)于同一個(gè)用戶的不同消息流程而言,它們之間存在邏輯關(guān)系。假定流程A為位置登記流程,流程B為取路由流程,只有成功執(zhí)行了位置登記流程,取路由流程才能根據(jù)位置登記后的數(shù)據(jù)正確獲取用戶2漫游地信息。由于,流程A與流程B分別通過連接對(duì)象2和連接對(duì)象1使用不同的硬連接訪問數(shù)據(jù)庫(kù),也就將分別使用各自硬連接對(duì)應(yīng)的數(shù)據(jù)緩存區(qū)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。因此,如果在先的流程A結(jié)束時(shí)沒有將其對(duì)于數(shù)據(jù)庫(kù)的改動(dòng)及時(shí)提交到數(shù)據(jù)庫(kù)中,那么這些更新的數(shù)據(jù)就保存在連接對(duì)象2對(duì)應(yīng)的數(shù)據(jù)緩存區(qū)中,隨后的流程B通過連接對(duì)象1的硬連接訪問數(shù)據(jù)庫(kù)時(shí),讀到的是連接對(duì)象1對(duì)應(yīng)的數(shù)據(jù)緩存區(qū)中的數(shù)據(jù),該數(shù)據(jù)為未經(jīng)流程A更新的“臟”數(shù)據(jù),即產(chǎn)生污讀。這里,數(shù)據(jù)庫(kù)系統(tǒng)為每個(gè)數(shù)據(jù)庫(kù)硬連接分配數(shù)據(jù)緩存區(qū),將當(dāng)前對(duì)數(shù)據(jù)庫(kù)的修改緩存起來;DBMS將根據(jù)系統(tǒng)性能要求等因素在若干應(yīng)用流程結(jié)束后,將數(shù)據(jù)緩存區(qū)的數(shù)據(jù)更新提交到DataBase。
      當(dāng)然,為了避免上述污讀情況,可以在每一個(gè)應(yīng)用流程結(jié)束后均執(zhí)行提交數(shù)據(jù)庫(kù)操作,即每個(gè)應(yīng)用流程對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)事務(wù)。這樣從理論上可行,但頻繁的提交(COMMIT)操作將導(dǎo)致輸入/輸出(I/O)迅速成為數(shù)據(jù)庫(kù)系統(tǒng)的性能瓶頸。以O(shè)racle數(shù)據(jù)庫(kù)系統(tǒng)為例,每次執(zhí)行COMMIT操作時(shí),系統(tǒng)的寫日志進(jìn)程(LGWR)就會(huì)將日志緩存區(qū)的重做日志(redo log)寫入日志文件。由于寫日志文件涉及到外存訪問,因此系統(tǒng)需要等待的時(shí)間就會(huì)顯著增加。當(dāng)應(yīng)用流程即數(shù)據(jù)庫(kù)事務(wù)非常多,執(zhí)行COMMIT操作非常頻繁時(shí),系統(tǒng)等待寫redo log的時(shí)間超過了其它所有操作的時(shí)間,也就是說系統(tǒng)主要是在等待寫redo log的完成。因此,導(dǎo)致I/O顯著增長(zhǎng)為系統(tǒng)性能的瓶頸,消息流程時(shí)延的均值和離散程度都顯著增加,系統(tǒng)的運(yùn)行狀態(tài)變得非常不穩(wěn)定。
      綜上所述,現(xiàn)有數(shù)據(jù)庫(kù)連接池的數(shù)據(jù)庫(kù)連接分配機(jī)制不能有效使所有應(yīng)用流程使用所分配的連接訪問到準(zhǔn)確的數(shù)據(jù),如果要避免污讀只能使系統(tǒng)性能顯著下降,甚至造成系統(tǒng)崩潰。如何在維持一定系統(tǒng)性能的基礎(chǔ)上保證數(shù)據(jù)庫(kù)訪問的有效性成為目前數(shù)據(jù)庫(kù)連接資源管理技術(shù)中亟待解決的問題。

      發(fā)明內(nèi)容
      有鑒于此,本發(fā)明的主要目的在于提供一種數(shù)據(jù)庫(kù)連接資源的管理方法,能夠避免多業(yè)務(wù)進(jìn)程同時(shí)訪問數(shù)據(jù)庫(kù)時(shí)出現(xiàn)的污讀,并有效保證數(shù)據(jù)庫(kù)系統(tǒng)的I/O性能。
      為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種數(shù)據(jù)庫(kù)連接資源的管理方法,該方法包括A.數(shù)據(jù)庫(kù)連接池接收到業(yè)務(wù)進(jìn)程的訪問請(qǐng)求后,確定與該訪問請(qǐng)求對(duì)應(yīng)的應(yīng)用流程有邏輯關(guān)系的應(yīng)用流程所對(duì)應(yīng)的連接對(duì)象;B.將步驟A所確定的連接對(duì)象分配給所述業(yè)務(wù)進(jìn)程的訪問。
      其中,所述邏輯關(guān)系為應(yīng)用流程屬性之間的關(guān)聯(lián)關(guān)系。
      其中,所述有邏輯關(guān)系的應(yīng)用流程為與該訪問請(qǐng)求對(duì)應(yīng)的應(yīng)用流程具有相同屬性的應(yīng)用流程。
      步驟A中,所述確定連接對(duì)象的方法為預(yù)先配置應(yīng)用流程屬性和連接對(duì)象的對(duì)應(yīng)關(guān)系,根據(jù)所述訪問請(qǐng)求中的應(yīng)用流程屬性確定連接對(duì)象。
      步驟A中,所述配置應(yīng)用流程屬性和連接對(duì)象的對(duì)應(yīng)關(guān)系的方法為構(gòu)造哈希(HASH)算法;所述根據(jù)應(yīng)用流程屬性確定連接對(duì)象的方法為根據(jù)應(yīng)用流程屬性,通過所構(gòu)造的HASH算法得到連接對(duì)象ID。
      步驟A中,所述配置應(yīng)用流程屬性和連接對(duì)象的對(duì)應(yīng)關(guān)系的方法為設(shè)置應(yīng)用流程屬性與連接對(duì)象之間的映射關(guān)系表;所述根據(jù)應(yīng)用流程屬性確定連接對(duì)象的方法為根據(jù)應(yīng)用流程屬性查詢?cè)撚成潢P(guān)系表確定連接對(duì)象。
      其中,該方法進(jìn)一步包括建立并實(shí)時(shí)維護(hù)應(yīng)用流程的連接對(duì)象使用狀態(tài)表;步驟A中,所述確定連接對(duì)象的方法包括A1.根據(jù)訪問請(qǐng)求中的應(yīng)用流程屬性查詢?cè)撨B接對(duì)象使用狀態(tài)表,判斷具有該屬性的應(yīng)用流程是否已經(jīng)分配過連接對(duì)象,如果是,執(zhí)行步驟A2;否則執(zhí)行步驟A3;A2.確定該已分配的連接對(duì)象為與該訪問請(qǐng)求對(duì)應(yīng)的應(yīng)用流程有邏輯關(guān)系的應(yīng)用流程所對(duì)應(yīng)的連接對(duì)象,執(zhí)行步驟B;A3.確定任意一個(gè)連接對(duì)象為與該訪問請(qǐng)求對(duì)應(yīng)的應(yīng)用流程有邏輯關(guān)系的應(yīng)用流程所對(duì)應(yīng)的連接對(duì)象。
      其中,所述應(yīng)用流程屬性為用戶ID、或群組ID。
      其中,該方法進(jìn)一步包括數(shù)據(jù)庫(kù)連接池周期性調(diào)整連接對(duì)象數(shù)目;所述調(diào)整連接對(duì)象數(shù)目的方法為預(yù)先設(shè)置申請(qǐng)連接對(duì)象成功率的合理范圍,周期性統(tǒng)計(jì)申請(qǐng)連接對(duì)象的成功率,如果申請(qǐng)連接對(duì)象成功率低于該合理范圍的最小值,則增加連接對(duì)象數(shù)目;如果申請(qǐng)連接對(duì)象成功率高于該合理范圍的最大值,則減少連接對(duì)象數(shù)目;如果申請(qǐng)連接對(duì)象成功率在該合理范圍內(nèi),則維持連接對(duì)象數(shù)目。
      其中,該方法進(jìn)一步包括數(shù)據(jù)庫(kù)連接池周期性調(diào)整連接對(duì)象數(shù)目;所述調(diào)整連接對(duì)象數(shù)目的方法為預(yù)先設(shè)置連接對(duì)象占用率的合理范圍,周期性統(tǒng)計(jì)連接對(duì)象的占用率,如果連接對(duì)象占用率低于該合理范圍的最小值,則減少連接對(duì)象數(shù)目;如果連接對(duì)象占用率高于該合理范圍的最大值,則增加連接對(duì)象數(shù)目;如果連接對(duì)象占用率在該合理范圍內(nèi),則維持連接對(duì)象數(shù)目。
      由上述方案可以看出,本發(fā)明的關(guān)鍵在于為分配到各業(yè)務(wù)進(jìn)程的應(yīng)用流程中具備邏輯關(guān)系的應(yīng)用流程的訪問分配同一連接對(duì)象。因此,本發(fā)明所提供的數(shù)據(jù)庫(kù)連接資源的管理方法,能夠保證數(shù)據(jù)庫(kù)訪問中數(shù)據(jù)讀取的正確性,使用戶得以靈活配置數(shù)據(jù)庫(kù)COMMIT的頻率,保證系統(tǒng)的I/O性能,還能夠通過動(dòng)態(tài)調(diào)整連接對(duì)象數(shù)目使數(shù)據(jù)庫(kù)連接資源的有效利用率達(dá)到最優(yōu)。


      圖1為現(xiàn)有技術(shù)數(shù)據(jù)庫(kù)連接資源分配情況示意圖;
      圖2為本發(fā)明中分配數(shù)據(jù)庫(kù)連接資源一較佳實(shí)施例處理流程示意圖;圖3為本發(fā)明中分配數(shù)據(jù)庫(kù)連接資源另一較佳實(shí)施例處理流程示意圖;圖4為應(yīng)用本發(fā)明技術(shù)分配數(shù)據(jù)庫(kù)連接資源的總體情況示意圖;圖5為本發(fā)明中調(diào)整連接對(duì)象數(shù)目一較佳實(shí)施例處理流程示意圖;圖6為本發(fā)明中調(diào)整連接對(duì)象數(shù)目另一較佳實(shí)施例處理流程示意圖。
      具體實(shí)施例方式
      下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說明。
      本發(fā)明提供了一種數(shù)據(jù)庫(kù)連接資源的管理方法,其主要設(shè)計(jì)思想為應(yīng)用流程通過業(yè)務(wù)進(jìn)程訪問數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)連接池為分配給各業(yè)務(wù)進(jìn)程的應(yīng)用流程中具有邏輯關(guān)系的一個(gè)或一個(gè)以上應(yīng)用流程的訪問分配同一連接對(duì)象。
      其中,可以使用應(yīng)用流程屬性來關(guān)聯(lián)應(yīng)用流程之間的邏輯關(guān)系,因此可以將具備相同屬性的應(yīng)用流程視為具有邏輯關(guān)系的應(yīng)用流程。因此,數(shù)據(jù)庫(kù)連接池應(yīng)為分配給各業(yè)務(wù)進(jìn)程的應(yīng)用流程中具有相同屬性的應(yīng)用流程的訪問分配同一連接對(duì)象,該分配方法基本有兩種一、預(yù)先配置應(yīng)用流程屬性與連接對(duì)象的對(duì)應(yīng)關(guān)系;在應(yīng)用流程訪問數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)連接池根據(jù)應(yīng)用流程屬性直接確定連接對(duì)象并分配給當(dāng)前業(yè)務(wù)進(jìn)程的訪問。二、實(shí)時(shí)保存應(yīng)用流程每一次訪問數(shù)據(jù)庫(kù)時(shí)使用連接對(duì)象的情況,即維護(hù)連接對(duì)象使用狀態(tài)表;當(dāng)數(shù)據(jù)庫(kù)連接池接收到業(yè)務(wù)進(jìn)程的訪問請(qǐng)求后,根據(jù)應(yīng)用流程屬性查詢?cè)撨B接對(duì)象使用狀態(tài)表,判斷具有該屬性的應(yīng)用流程是否已分配過連接對(duì)象,如果是,分配該連接對(duì)象給當(dāng)前業(yè)務(wù)進(jìn)程的訪問;否則任意分配連接對(duì)象給當(dāng)前業(yè)務(wù)進(jìn)程的訪問。這里,所述分配連接對(duì)象即為分配數(shù)據(jù)庫(kù)連接資源。
      下面結(jié)合圖2和圖3分別對(duì)本發(fā)明中采用上述兩種分配連接對(duì)象方法的圖2為本發(fā)明中分配數(shù)據(jù)庫(kù)連接資源一較佳實(shí)施例處理流程示意圖。在本實(shí)施例中,數(shù)據(jù)庫(kù)連接池采用上述第一種方法來分配連接對(duì)象,即根據(jù)應(yīng)用流程屬性直接確定連接對(duì)象,所述應(yīng)用流程屬性為用戶標(biāo)識(shí)(ID)。其中,對(duì)于通信、金融等領(lǐng)域的大型數(shù)據(jù)庫(kù)來說,通常同一用戶的多個(gè)應(yīng)用流程之間具備邏輯關(guān)系,比如某用戶成功執(zhí)行了位置登記流程,其取路由流程才能根據(jù)位置登記后的數(shù)據(jù)正確獲取該用戶的漫游地信息;因此,通常將用戶ID相同的應(yīng)用流程視為具備邏輯關(guān)系的應(yīng)用流程。本發(fā)明所述應(yīng)用流程屬性可以為用戶ID、群組ID等,關(guān)于具體采用哪種應(yīng)用流程屬性來關(guān)聯(lián)應(yīng)用流程之間的邏輯關(guān)系與數(shù)據(jù)庫(kù)管理系統(tǒng)所支持的應(yīng)用軟件系統(tǒng)功能相關(guān),本發(fā)明不進(jìn)行限定。
      如圖2所示,具體處理如下步驟201數(shù)據(jù)庫(kù)連接池接收業(yè)務(wù)進(jìn)程的數(shù)據(jù)庫(kù)訪問請(qǐng)求。這里,應(yīng)用流程訪問數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)管理系統(tǒng)所支持的應(yīng)用軟件系統(tǒng)將為應(yīng)用流程隨機(jī)分配業(yè)務(wù)進(jìn)程,該業(yè)務(wù)進(jìn)程將向數(shù)據(jù)庫(kù)連接池發(fā)起數(shù)據(jù)庫(kù)訪問請(qǐng)求,該請(qǐng)求包含用戶ID、訪問需求等信息。
      步驟202數(shù)據(jù)庫(kù)連接池根據(jù)接收到的數(shù)據(jù)庫(kù)訪問請(qǐng)求中的用戶ID確定當(dāng)前訪問對(duì)應(yīng)的連接對(duì)象ID。
      其中,數(shù)據(jù)庫(kù)連接池預(yù)先配置用戶ID與連接對(duì)象之間的對(duì)應(yīng)關(guān)系,從而可以根據(jù)接收到的用戶ID直接確定其對(duì)應(yīng)的連接對(duì)象ID。所述配置用戶ID與連接對(duì)象ID之間對(duì)應(yīng)關(guān)系的方法基本有兩種1、構(gòu)造哈希(HASH)算法,該算法根據(jù)用戶ID能夠直接得到連接對(duì)象索引值,該連接對(duì)象索引值通常為連接對(duì)象ID;2、保存用戶ID與連接對(duì)象ID之間的靜態(tài)映射關(guān)系表,從而根據(jù)用戶ID查詢此映射關(guān)系表就可以得到連接對(duì)象ID。本發(fā)明中,一個(gè)連接對(duì)象可以對(duì)應(yīng)多個(gè)應(yīng)用流程,一個(gè)應(yīng)用流程則只能使用一個(gè)連接對(duì)象,因此所配置的用戶ID與連接對(duì)象ID之間對(duì)應(yīng)關(guān)系的基本原則為一個(gè)用戶ID僅對(duì)應(yīng)一個(gè)連接對(duì)象ID,但并不限定每個(gè)連接對(duì)象ID所對(duì)應(yīng)的用戶ID數(shù)量。
      這里,所述HASH算法的具體運(yùn)算規(guī)則有多種,本發(fā)明并不限定。比如可以構(gòu)造HASH算法的運(yùn)算規(guī)則為15位十進(jìn)制數(shù)的各位數(shù)之和除以連接對(duì)象數(shù)目,將所得到的余數(shù)作為連接對(duì)象ID輸出。該算法應(yīng)用于通信領(lǐng)域時(shí),用戶ID采用國(guó)際移動(dòng)用戶標(biāo)識(shí)(IMSI),假定IMSI為460010755123456,當(dāng)前連接對(duì)象數(shù)目為6,該IMSI各位數(shù)之和為49,則使用該算法輸入該IMSI,將輸出索引值1,即得到連接對(duì)象ID為1。關(guān)于具體如何構(gòu)造HASH算法屬公知技術(shù),本文不作詳述。
      步驟203數(shù)據(jù)庫(kù)連接池根據(jù)步驟202所確定的連接對(duì)象ID,將該連接對(duì)象分配給當(dāng)前業(yè)務(wù)進(jìn)程的訪問,從而當(dāng)前業(yè)務(wù)進(jìn)程與該連接對(duì)象建立數(shù)據(jù)庫(kù)軟連接。
      步驟204步驟203所分配的連接對(duì)象根據(jù)業(yè)務(wù)進(jìn)程的訪問請(qǐng)求中的訪問需求,使用自身與數(shù)據(jù)庫(kù)之間的硬連接訪問數(shù)據(jù)庫(kù),從而完成對(duì)數(shù)據(jù)庫(kù)記錄的相應(yīng)操作。
      這里,所述訪問需求為指示對(duì)數(shù)據(jù)庫(kù)記錄進(jìn)行哪些操作以及對(duì)哪些內(nèi)容進(jìn)行操作的信息;所述操作為查詢、增加、修改、或刪除等等。
      上述實(shí)施例中,預(yù)先通過構(gòu)造HASH算法或保存靜態(tài)映射關(guān)系表配置應(yīng)用流程屬性與連接對(duì)象的對(duì)應(yīng)關(guān)系,則應(yīng)用流程屬性與連接對(duì)象之間的對(duì)應(yīng)關(guān)系固定。如果事先并不配置應(yīng)用流程屬性與連接對(duì)象之間固定的對(duì)應(yīng)關(guān)系,而是在應(yīng)用流程訪問數(shù)據(jù)庫(kù)時(shí)動(dòng)態(tài)確定連接對(duì)象,則可以采用上述第二種方法來分配連接對(duì)象,具體處理方法參見圖3。
      圖3為本發(fā)明中分配數(shù)據(jù)庫(kù)連接資源另一較佳實(shí)施例處理流程示意圖。本實(shí)施例中,同樣將用戶ID作為應(yīng)用流程屬性來判決各應(yīng)用流程是否具備邏輯關(guān)系,將用戶ID相同的應(yīng)用流程視為具備邏輯關(guān)系的應(yīng)用流程。如圖3所示,處理步驟包括步驟301數(shù)據(jù)庫(kù)連接池接收業(yè)務(wù)進(jìn)程的數(shù)據(jù)庫(kù)訪問請(qǐng)求。
      步驟302數(shù)據(jù)庫(kù)連接池根據(jù)接收到的數(shù)據(jù)庫(kù)訪問請(qǐng)求中的用戶ID,判斷該用戶的應(yīng)用流程是否已分配過連接對(duì)象,如果是,執(zhí)行步驟303;否則執(zhí)行步驟304。
      其中,數(shù)據(jù)庫(kù)連接池實(shí)時(shí)維護(hù)連接對(duì)象使用狀態(tài)表,每一次為業(yè)務(wù)進(jìn)程的訪問分配連接對(duì)象之后,均將當(dāng)前訪問對(duì)應(yīng)的應(yīng)用流程屬性及所分配的連接對(duì)象信息添加至該狀態(tài)表中。該狀態(tài)表中至少保存應(yīng)用流程屬性、具有該屬性的應(yīng)用流程所分配過的連接對(duì)象信息。這里,所述應(yīng)用流程屬性為用戶ID,所述連接對(duì)象信息為連接對(duì)象ID,則本步驟中,根據(jù)用戶ID查詢?cè)撨B接對(duì)象使用狀態(tài)表能夠得知是否已為該用戶的應(yīng)用流程分配過連接對(duì)象,并能夠得到已分配的連接對(duì)象ID。
      步驟303根據(jù)步驟302得到的已分配的連接對(duì)象ID,將該連接對(duì)象分配給當(dāng)前業(yè)務(wù)進(jìn)程的訪問,從而當(dāng)前業(yè)務(wù)進(jìn)程的訪問與該連接對(duì)象建立數(shù)據(jù)庫(kù)軟連接,執(zhí)行步驟305。
      步驟304任意選擇一個(gè)連接對(duì)象ID,將該連接對(duì)象分配給當(dāng)前業(yè)務(wù)進(jìn)程的訪問,從而當(dāng)前業(yè)務(wù)進(jìn)程的訪問與該連接對(duì)象建立數(shù)據(jù)庫(kù)軟連接。同時(shí)將當(dāng)前訪問對(duì)應(yīng)的用戶ID及所分配的連接對(duì)象ID添加至該狀態(tài)表中。
      步驟305所分配的連接對(duì)象根據(jù)業(yè)務(wù)進(jìn)程的訪問請(qǐng)求中的訪問需求,使用自身與數(shù)據(jù)庫(kù)之間的硬連接訪問數(shù)據(jù)庫(kù),從而完成對(duì)數(shù)據(jù)庫(kù)記錄的相應(yīng)操作。
      圖2和圖3所述實(shí)施例為數(shù)據(jù)庫(kù)連接池針對(duì)一次訪問請(qǐng)求分配連接對(duì)象的處理,每一次接收到數(shù)據(jù)庫(kù)訪問請(qǐng)求時(shí),均將執(zhí)行圖2或圖3所述的處理,從而為具備相同屬性的應(yīng)用流程分配同一連接對(duì)象。圖4為應(yīng)用本發(fā)明技術(shù)分配數(shù)據(jù)庫(kù)連接資源的總體情況示意圖。
      圖4與圖1所示類似,業(yè)務(wù)進(jìn)程通過數(shù)據(jù)庫(kù)連接池與DBMS通信,由DBMS根據(jù)業(yè)務(wù)進(jìn)程的訪問請(qǐng)求對(duì)DataBase進(jìn)行操作。其中,當(dāng)前進(jìn)行訪問的用戶包括用戶1、用戶2、用戶3;業(yè)務(wù)進(jìn)程有N個(gè)用戶1的流程A和用戶2的流程B屬業(yè)務(wù)進(jìn)程1,用戶1的流程B和用戶2的流程A屬業(yè)務(wù)進(jìn)程2,......,用戶3的流程A和流程B屬業(yè)務(wù)進(jìn)程N(yùn);數(shù)據(jù)庫(kù)連接池中建立了M個(gè)連接對(duì)象,即通過DBMS與DataBase建立了M個(gè)數(shù)據(jù)庫(kù)硬連接。應(yīng)用流程每次通過業(yè)務(wù)進(jìn)程訪問數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)連接池將按本發(fā)明方法為該業(yè)務(wù)進(jìn)程實(shí)時(shí)分配一個(gè)連接對(duì)象,即建立數(shù)據(jù)庫(kù)軟連接。
      這里,選擇用戶ID作為關(guān)聯(lián)應(yīng)用流程之間邏輯關(guān)系的應(yīng)用流程屬性,因此,應(yīng)用圖2或圖3所述實(shí)施例能夠?yàn)榫哂邢嗤脩鬒D的應(yīng)用流程的訪問分配同一連接對(duì)象。如圖4所示,數(shù)據(jù)庫(kù)連接池為用戶1的流程A和流程B的訪問分配連接對(duì)象1,并分別建立連接1和連接3;為用戶2的流程A和流程B的訪問分配連接對(duì)象2,并分別建立連接4和連接2;為用戶3的流程A和流程B分配連接對(duì)象M,并分別建立連接5和連接6。
      對(duì)于每個(gè)用戶來說,其各個(gè)應(yīng)用流程通過業(yè)務(wù)進(jìn)程訪問數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)連接池為其分配同一連接對(duì)象,通過同一硬連接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,并共享同一數(shù)據(jù)緩沖區(qū),這樣,就避免了背景技術(shù)所述先后執(zhí)行同一用戶不同應(yīng)用流程的訪問時(shí)出現(xiàn)的污讀現(xiàn)象。以圖4中用戶2的應(yīng)用流程訪問為例數(shù)據(jù)庫(kù)連接池為用戶2的流程A和流程B分配連接對(duì)象2,從而該流程A和流程B可以共享連接對(duì)象2的數(shù)據(jù)緩存區(qū),假定流程A在先執(zhí)行,流程B在后執(zhí)行。由于該兩個(gè)流程共享同一數(shù)據(jù)緩存區(qū),流程A對(duì)數(shù)據(jù)庫(kù)的改動(dòng)已保存在數(shù)據(jù)緩存區(qū)中,流程B在后執(zhí)行時(shí)將根據(jù)該數(shù)據(jù)緩存區(qū)的數(shù)據(jù)進(jìn)行操作,這樣不管流程A結(jié)束時(shí)是否已將數(shù)據(jù)更新提交到數(shù)據(jù)庫(kù),都不會(huì)對(duì)流程B的執(zhí)行造成影響,也就避免了上述污讀現(xiàn)象。
      可見,應(yīng)用本發(fā)明方法,數(shù)據(jù)庫(kù)連接池根據(jù)業(yè)務(wù)進(jìn)程的訪問請(qǐng)求分配數(shù)據(jù)庫(kù)連接資源時(shí),不必考慮與當(dāng)前請(qǐng)求的應(yīng)用流程具備邏輯關(guān)系的應(yīng)用流程對(duì)數(shù)據(jù)庫(kù)的修改是否已經(jīng)提交。同樣,數(shù)據(jù)庫(kù)系統(tǒng)在配置COMMIT的頻率時(shí)也不必關(guān)心應(yīng)用流程之間的邏輯關(guān)系,不僅大大簡(jiǎn)化了系統(tǒng)中數(shù)據(jù)庫(kù)連接資源管理部分的開發(fā)過程,而且在系統(tǒng)運(yùn)行時(shí)可以靈活調(diào)整COMMIT的頻率,使系統(tǒng)的I/O性能保持最優(yōu)。其中,業(yè)務(wù)進(jìn)程每一次訪問數(shù)據(jù)庫(kù)時(shí),根據(jù)當(dāng)前訪問的業(yè)務(wù)邏輯將生成一條或一組結(jié)構(gòu)化查詢語句(SQL),所謂COMMIT的頻率可由每次將數(shù)據(jù)更新提交數(shù)據(jù)庫(kù)時(shí)執(zhí)行的SQL語句量來表征如果每次執(zhí)行的SQL語句量較多,則說明COMMIT頻率較低;反之,如果每次執(zhí)行的SQL語句量較少,則說明COMMIT頻率較高。
      本發(fā)明的數(shù)據(jù)庫(kù)連接池在保證具有邏輯關(guān)系的應(yīng)用流程的訪問使用同一連接對(duì)象的同時(shí),還進(jìn)一步對(duì)數(shù)據(jù)庫(kù)連接池中連接對(duì)象的數(shù)目進(jìn)行動(dòng)態(tài)調(diào)整,使數(shù)據(jù)庫(kù)連接資源得到有效利用。下面結(jié)合圖5和圖6對(duì)本發(fā)明調(diào)整連接對(duì)象數(shù)目的方法加以詳細(xì)描述。
      圖5為本發(fā)明中調(diào)整連接對(duì)象數(shù)目一較佳實(shí)施例處理流程示意圖。在本實(shí)施例中,數(shù)據(jù)庫(kù)連接池周期性統(tǒng)計(jì)申請(qǐng)連接對(duì)象的成功率,并根據(jù)所統(tǒng)計(jì)的申請(qǐng)連接對(duì)象成功率來決定如何調(diào)整連接對(duì)象數(shù)目。系統(tǒng)預(yù)先配置統(tǒng)計(jì)周期時(shí)長(zhǎng),并設(shè)置申請(qǐng)連接對(duì)象成功率的合理范圍。對(duì)于每一個(gè)統(tǒng)計(jì)周期來說,具體處理如圖5所示步驟501數(shù)據(jù)庫(kù)連接池獲取本統(tǒng)計(jì)周期內(nèi),業(yè)務(wù)進(jìn)程申請(qǐng)連接對(duì)象成功的次數(shù),以及業(yè)務(wù)進(jìn)程申請(qǐng)連接對(duì)象的總次數(shù)。
      步驟502根據(jù)步驟501所統(tǒng)計(jì)的申請(qǐng)連接對(duì)象成功的次數(shù)與所述申請(qǐng)連接對(duì)象總次數(shù),計(jì)算得到申請(qǐng)連接對(duì)象的成功率。這里,可以采用申請(qǐng)連接對(duì)象成功的次數(shù)與申請(qǐng)連接對(duì)象總次數(shù)的比值來表示申請(qǐng)連接對(duì)象成功率。
      步驟503判斷步驟502計(jì)算得到的申請(qǐng)連接對(duì)象成功率是否在所設(shè)置的合理范圍內(nèi),如果該申請(qǐng)連接對(duì)象成功率高于此范圍的最大值,則執(zhí)行步驟504;如果該申請(qǐng)連接對(duì)象成功率低于此范圍的最小值,則執(zhí)行步驟505;如果該申請(qǐng)連接對(duì)象成功率的值在此范圍內(nèi),則結(jié)束當(dāng)前處理。
      步驟504減少連接對(duì)象數(shù)目,即釋放部分與數(shù)據(jù)庫(kù)之間的硬連接,結(jié)束當(dāng)前處理。
      步驟505增加連接對(duì)象數(shù)目,即建立若干與數(shù)據(jù)庫(kù)之間的硬連接,結(jié)束當(dāng)前處理。
      其中,所述增加或減少連接對(duì)象數(shù)目的方法屬公知技術(shù),并且非本發(fā)明解決的問題,因此不作詳述。關(guān)于每次減少或增加多少個(gè)連接對(duì)象,由數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)的具體情況確定,通??稍谙到y(tǒng)運(yùn)行前通過測(cè)試得到每次增加或減少連接對(duì)象的數(shù)目,并通過配置文件在系統(tǒng)初始化時(shí)設(shè)置在數(shù)據(jù)庫(kù)連接池中,本發(fā)明對(duì)此不進(jìn)行限定。
      本實(shí)施例中,所述申請(qǐng)連接對(duì)象的成功率可以表征連接對(duì)象使用的忙閑程度,如果該成功率較高,則說明連接對(duì)象比較空閑,即數(shù)據(jù)庫(kù)連接資源足夠使用,那么當(dāng)成功率高于一定數(shù)值時(shí)就有必要減少連接對(duì)象數(shù)目來節(jié)約數(shù)據(jù)庫(kù)連接資源;如果該成功率較低,則說明連接對(duì)象使用頻率較高,即數(shù)據(jù)庫(kù)連接資源比較緊張,那么當(dāng)成功率低于一定數(shù)值時(shí)就有必要增加連接對(duì)象數(shù)目來補(bǔ)充數(shù)據(jù)庫(kù)連接資源,以維持?jǐn)?shù)據(jù)庫(kù)系統(tǒng)的I/O性能。
      因此,本發(fā)明預(yù)先設(shè)置申請(qǐng)連接對(duì)象成功率的合理取值范圍,當(dāng)統(tǒng)計(jì)得到的申請(qǐng)連接對(duì)象成功率高于該范圍的最大值,則減少連接對(duì)象數(shù)目;當(dāng)統(tǒng)計(jì)得到的申請(qǐng)連接對(duì)象成功率低于該范圍的最小值,則增加連接對(duì)象數(shù)目;當(dāng)統(tǒng)計(jì)得到的申請(qǐng)連接對(duì)象成功率在該范圍內(nèi),則維持當(dāng)前連接對(duì)象數(shù)目。
      圖6為本發(fā)明中調(diào)整連接對(duì)象數(shù)目另一較佳實(shí)施例處理流程示意圖。在本實(shí)施例中,數(shù)據(jù)庫(kù)連接池周期性統(tǒng)計(jì)連接對(duì)象占用率,并根據(jù)所統(tǒng)計(jì)的連接對(duì)象占用率來決定如何調(diào)整連接對(duì)象數(shù)目。系統(tǒng)預(yù)先配置統(tǒng)計(jì)周期時(shí)長(zhǎng),并設(shè)置連接對(duì)象占用率的合理范圍。對(duì)于每一個(gè)統(tǒng)計(jì)周期來說,如圖6所示,具體處理包括步驟601數(shù)據(jù)庫(kù)連接池獲取本統(tǒng)計(jì)周期內(nèi),業(yè)務(wù)進(jìn)程占用連接對(duì)象的總時(shí)間。
      其中,可以統(tǒng)計(jì)每次數(shù)據(jù)庫(kù)訪問時(shí)連接對(duì)象被業(yè)務(wù)進(jìn)程占用的時(shí)間,將各次數(shù)據(jù)庫(kù)訪問時(shí)連接對(duì)象被占用的時(shí)間累加,即得到業(yè)務(wù)進(jìn)程占用連接對(duì)象的總時(shí)間。上述統(tǒng)計(jì)占用連接對(duì)象總時(shí)間的具體實(shí)現(xiàn)機(jī)制有多種,本發(fā)明并不限定,這里僅以時(shí)間戳機(jī)制為例進(jìn)行說明預(yù)先為各連接對(duì)象設(shè)置時(shí)間戳,當(dāng)業(yè)務(wù)進(jìn)程調(diào)用連接對(duì)象時(shí),該連接對(duì)象將被打上時(shí)間戳;當(dāng)業(yè)務(wù)進(jìn)程完成訪問釋放連接對(duì)象時(shí),該連接對(duì)象也被打上時(shí)間戳,兩個(gè)時(shí)間戳的值之差即為當(dāng)前數(shù)據(jù)庫(kù)訪問中連接對(duì)象被占用的時(shí)間。每個(gè)連接對(duì)象每次數(shù)據(jù)庫(kù)訪問時(shí)均按此方法記錄自身被占用的時(shí)間,當(dāng)統(tǒng)計(jì)周期結(jié)束時(shí),將各連接對(duì)象每次數(shù)據(jù)庫(kù)訪問時(shí)被占用的時(shí)間累加,就得到了所有連接對(duì)象被占用的總時(shí)間。
      步驟602根據(jù)步驟601所獲取的占用連接對(duì)象的總時(shí)間計(jì)算得到連接對(duì)象的占用率。這里,所述連接對(duì)象的占用率可以由所述占用連接對(duì)象的總時(shí)間與該統(tǒng)計(jì)周期時(shí)長(zhǎng)的比值來表征。
      步驟603判斷步驟602計(jì)算得到的連接對(duì)象占用率是否在所設(shè)置的合理范圍內(nèi),如果該連接對(duì)象占用率高于此范圍的最大值,則執(zhí)行步驟604;如果該連接對(duì)象占用率低于此范圍的最小值,則執(zhí)行步驟605;如果該連接對(duì)象占用率的值在此范圍內(nèi),則結(jié)束當(dāng)前處理。
      步驟604增加連接對(duì)象數(shù)目,結(jié)束當(dāng)前處理。
      步驟605減少連接對(duì)象數(shù)目,結(jié)束當(dāng)前處理。
      本實(shí)施例中,所述連接對(duì)象的占用率也可以表征連接對(duì)象使用的忙閑程度,如果該占用率較低,則說明連接對(duì)象比較空閑,即數(shù)據(jù)庫(kù)連接資源足夠使用,那么當(dāng)占用率低于一定數(shù)值時(shí)就有必要減少連接對(duì)象數(shù)目來節(jié)約數(shù)據(jù)庫(kù)連接資源;如果該占用率較高,則說明連接對(duì)象使用頻率較高,即數(shù)據(jù)庫(kù)連接資源比較緊張,那么當(dāng)占用率高于一定數(shù)值時(shí)就有必要增加連接對(duì)象數(shù)目來補(bǔ)充數(shù)據(jù)庫(kù)連接資源,以保證數(shù)據(jù)庫(kù)系統(tǒng)良好的I/O性能。
      因此,本發(fā)明預(yù)先設(shè)置連接對(duì)象占用率的合理取值范圍,當(dāng)統(tǒng)計(jì)得到的連接對(duì)象占用率低于該范圍的最小值,則減少連接對(duì)象數(shù)目;當(dāng)統(tǒng)計(jì)得到的連接對(duì)象占用率高于該范圍的最大值,則增加連接對(duì)象數(shù)目;當(dāng)統(tǒng)計(jì)得到的連接對(duì)象占用率在該范圍內(nèi),則維持當(dāng)前連接對(duì)象數(shù)目。
      應(yīng)用上述圖5和圖6所述的方法來動(dòng)態(tài)調(diào)整連接對(duì)象數(shù)目,使數(shù)據(jù)庫(kù)連接池中連接對(duì)象的數(shù)目始終保持最優(yōu),即使在數(shù)據(jù)庫(kù)系統(tǒng)總的訪問量較大時(shí),也能保證每一個(gè)數(shù)據(jù)庫(kù)訪問都能夠得到及時(shí)響應(yīng),從而有效改善系統(tǒng)的I/O性能。
      由于,當(dāng)調(diào)整連接對(duì)象數(shù)目時(shí),如果采用所述第一種分配連接對(duì)象的方法,則連接對(duì)象數(shù)目的變化將引發(fā)應(yīng)用流程屬性與連接對(duì)象之間對(duì)應(yīng)關(guān)系的改變。尤其,當(dāng)使用HASH算法配置應(yīng)用流程屬性與連接對(duì)象的對(duì)應(yīng)關(guān)系時(shí),連接對(duì)象數(shù)目變化通常將造成HASH算法的輸出的連接對(duì)象ID值的改變,比如在連接對(duì)象數(shù)目調(diào)整前,屬性為A的應(yīng)用流程對(duì)應(yīng)連接對(duì)象1;在連接對(duì)象數(shù)目調(diào)整后,根據(jù)HASH算法的輸出值,該屬性為A的應(yīng)用流程對(duì)應(yīng)的連接對(duì)象變?yōu)檫B接對(duì)象2。因此,如果連接對(duì)象數(shù)目的變化將引發(fā)應(yīng)用流程屬性與連接對(duì)象對(duì)應(yīng)關(guān)系的改變,則在應(yīng)用上述圖5和圖6所述的方法動(dòng)態(tài)調(diào)整連接對(duì)象數(shù)目之前,需要將所有連接對(duì)象對(duì)數(shù)據(jù)庫(kù)的改動(dòng)提交數(shù)據(jù)庫(kù),以確保在應(yīng)用流程屬性與連接對(duì)象之間的對(duì)應(yīng)關(guān)系發(fā)生改變前,所有的數(shù)據(jù)更新都已經(jīng)保存到DataBase中,從而避免在連接對(duì)象數(shù)目調(diào)整后,由于相同屬性應(yīng)用流程的訪問所對(duì)應(yīng)的連接對(duì)象的改變而出現(xiàn)的污讀現(xiàn)象。這里所述僅為調(diào)整連接對(duì)象數(shù)目時(shí)為避免數(shù)據(jù)庫(kù)污讀,系統(tǒng)所采取的一種實(shí)施方式,但并不排除有其它實(shí)施方式的可能,具體采取哪種實(shí)施方式本發(fā)明不進(jìn)行限定;并且,本段所述處理非本發(fā)明重點(diǎn),因此對(duì)于其它實(shí)施方式本文不再進(jìn)一步詳述,但并不影響本發(fā)明的有效性。
      綜上所述,應(yīng)用本發(fā)明方法能夠在多個(gè)業(yè)務(wù)進(jìn)程同時(shí)訪問數(shù)據(jù)庫(kù)時(shí),使分配到各業(yè)務(wù)進(jìn)程的具備邏輯關(guān)系的應(yīng)用流程的訪問使用同一連接對(duì)象,這樣應(yīng)用流程訪問數(shù)據(jù)庫(kù)時(shí)不必考慮其它有關(guān)應(yīng)用流程對(duì)數(shù)據(jù)庫(kù)的修改是否已執(zhí)行COMMIT操作,并能夠防止數(shù)據(jù)的污讀,不僅顯著簡(jiǎn)化了數(shù)據(jù)庫(kù)管理系統(tǒng)的開發(fā)過程,而且使用戶更加靈活的配置數(shù)據(jù)庫(kù)COMMIT的頻率,有效保證數(shù)據(jù)庫(kù)系統(tǒng)的I/O性能。在此基礎(chǔ)之上,本發(fā)明還增加了動(dòng)態(tài)調(diào)整數(shù)據(jù)庫(kù)連接池的連接對(duì)象數(shù)目的處理,從而有效利用數(shù)據(jù)庫(kù)連接資源來提高服務(wù)質(zhì)量。
      以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
      權(quán)利要求
      1.一種數(shù)據(jù)庫(kù)連接資源的管理方法,其特征在于,該方法包括A.數(shù)據(jù)庫(kù)連接池接收到業(yè)務(wù)進(jìn)程的訪問請(qǐng)求后,確定與該訪問請(qǐng)求對(duì)應(yīng)的應(yīng)用流程有邏輯關(guān)系的應(yīng)用流程所對(duì)應(yīng)的連接對(duì)象;B.將步驟A所確定的連接對(duì)象分配給所述業(yè)務(wù)進(jìn)程的訪問。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述邏輯關(guān)系為應(yīng)用流程屬性之間的關(guān)聯(lián)關(guān)系。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述有邏輯關(guān)系的應(yīng)用流程為與該訪問請(qǐng)求對(duì)應(yīng)的應(yīng)用流程具有相同屬性的應(yīng)用流程。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,步驟A中,所述確定連接對(duì)象的方法為預(yù)先配置應(yīng)用流程屬性和連接對(duì)象的對(duì)應(yīng)關(guān)系,根據(jù)所述訪問請(qǐng)求中的應(yīng)用流程屬性確定連接對(duì)象。
      5.根據(jù)權(quán)利要求4所述的方法,其特征在于,步驟A中,所述配置應(yīng)用流程屬性和連接對(duì)象的對(duì)應(yīng)關(guān)系的方法為構(gòu)造哈希HASH算法;所述根據(jù)應(yīng)用流程屬性確定連接對(duì)象的方法為根據(jù)應(yīng)用流程屬性,通過所構(gòu)造的HASH算法得到連接對(duì)象ID。
      6.根據(jù)權(quán)利要求4所述的方法,其特征在于,步驟A中,所述配置應(yīng)用流程屬性和連接對(duì)象的對(duì)應(yīng)關(guān)系的方法為設(shè)置應(yīng)用流程屬性與連接對(duì)象之間的映射關(guān)系表;所述根據(jù)應(yīng)用流程屬性確定連接對(duì)象的方法為根據(jù)應(yīng)用流程屬性查詢?cè)撚成潢P(guān)系表確定連接對(duì)象。
      7.根據(jù)權(quán)利要求3所述的方法,其特征在于,該方法進(jìn)一步包括建立并實(shí)時(shí)維護(hù)應(yīng)用流程的連接對(duì)象使用狀態(tài)表;步驟A中,所述確定連接對(duì)象的方法包括A1.根據(jù)訪問請(qǐng)求中的應(yīng)用流程屬性查詢?cè)撨B接對(duì)象使用狀態(tài)表,判斷具有該屬性的應(yīng)用流程是否已經(jīng)分配過連接對(duì)象,如果是,執(zhí)行步驟A2;否則執(zhí)行步驟A3;A2.確定該已分配的連接對(duì)象為與該訪問請(qǐng)求對(duì)應(yīng)的應(yīng)用流程有邏輯關(guān)系的應(yīng)用流程所對(duì)應(yīng)的連接對(duì)象,執(zhí)行步驟B;A3.確定任意一個(gè)連接對(duì)象為與該訪問請(qǐng)求對(duì)應(yīng)的應(yīng)用流程有邏輯關(guān)系的應(yīng)用流程所對(duì)應(yīng)的連接對(duì)象。
      8.根據(jù)權(quán)利要求2至7任一項(xiàng)所述的方法,其特征在于,所述應(yīng)用流程屬性為用戶ID、或群組ID。
      9.根據(jù)權(quán)利要求1至7任一項(xiàng)所述的方法,其特征在于,該方法進(jìn)一步包括數(shù)據(jù)庫(kù)連接池周期性調(diào)整連接對(duì)象數(shù)目;所述調(diào)整連接對(duì)象數(shù)目的方法為預(yù)先設(shè)置申請(qǐng)連接對(duì)象成功率的合理范圍,周期性統(tǒng)計(jì)申請(qǐng)連接對(duì)象的成功率,如果申請(qǐng)連接對(duì)象成功率低于該合理范圍的最小值,則增加連接對(duì)象數(shù)目;如果申請(qǐng)連接對(duì)象成功率高于該合理范圍的最大值,則減少連接對(duì)象數(shù)目;如果申請(qǐng)連接對(duì)象成功率在該合理范圍內(nèi),則維持連接對(duì)象數(shù)目。
      10.根據(jù)權(quán)利要求1至7任一項(xiàng)所述的方法,其特征在于,該方法進(jìn)一步包括數(shù)據(jù)庫(kù)連接池周期性調(diào)整連接對(duì)象數(shù)目;所述調(diào)整連接對(duì)象數(shù)目的方法為預(yù)先設(shè)置連接對(duì)象占用率的合理范圍,周期性統(tǒng)計(jì)連接對(duì)象的占用率,如果連接對(duì)象占用率低于該合理范圍的最小值,則減少連接對(duì)象數(shù)目;如果連接對(duì)象占用率高于該合理范圍的最大值,則增加連接對(duì)象數(shù)目;如果連接對(duì)象占用率在該合理范圍內(nèi),則維持連接對(duì)象數(shù)目。
      全文摘要
      本發(fā)明公開了一種數(shù)據(jù)庫(kù)連接資源的管理方法,該方法包括A.數(shù)據(jù)庫(kù)連接池接收到業(yè)務(wù)進(jìn)程的訪問請(qǐng)求后,確定與該訪問請(qǐng)求對(duì)應(yīng)的應(yīng)用流程有邏輯關(guān)系的應(yīng)用流程所對(duì)應(yīng)的連接對(duì)象;B.將步驟A所確定的連接對(duì)象分配給所述業(yè)務(wù)進(jìn)程的訪問。采用本發(fā)明方法,能夠避免污讀現(xiàn)象,并保證數(shù)據(jù)庫(kù)系統(tǒng)性能。
      文檔編號(hào)G06F17/30GK1815469SQ20051000522
      公開日2006年8月9日 申請(qǐng)日期2005年2月1日 優(yōu)先權(quán)日2005年2月1日
      發(fā)明者王仲濤 申請(qǐng)人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1