新四季網

一種資料庫連接資源的管理方法

2023-04-27 00:30:46

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

發明內容
有鑑於此,本發明的主要目的在於提供一種資料庫連接資源的管理方法,能夠避免多業務進程同時訪問資料庫時出現的汙讀,並有效保證資料庫系統的I/O性能。
為達到上述目的,本發明的技術方案是這樣實現的一種資料庫連接資源的管理方法,該方法包括A.資料庫連接池接收到業務進程的訪問請求後,確定與該訪問請求對應的應用流程有邏輯關係的應用流程所對應的連接對象;B.將步驟A所確定的連接對象分配給所述業務進程的訪問。
其中,所述邏輯關係為應用流程屬性之間的關聯關係。
其中,所述有邏輯關係的應用流程為與該訪問請求對應的應用流程具有相同屬性的應用流程。
步驟A中,所述確定連接對象的方法為預先配置應用流程屬性和連接對象的對應關係,根據所述訪問請求中的應用流程屬性確定連接對象。
步驟A中,所述配置應用流程屬性和連接對象的對應關係的方法為構造哈希(HASH)算法;所述根據應用流程屬性確定連接對象的方法為根據應用流程屬性,通過所構造的HASH算法得到連接對象ID。
步驟A中,所述配置應用流程屬性和連接對象的對應關係的方法為設置應用流程屬性與連接對象之間的映射關係表;所述根據應用流程屬性確定連接對象的方法為根據應用流程屬性查詢該映射關係表確定連接對象。
其中,該方法進一步包括建立並實時維護應用流程的連接對象使用狀態表;步驟A中,所述確定連接對象的方法包括A1.根據訪問請求中的應用流程屬性查詢該連接對象使用狀態表,判斷具有該屬性的應用流程是否已經分配過連接對象,如果是,執行步驟A2;否則執行步驟A3;A2.確定該已分配的連接對象為與該訪問請求對應的應用流程有邏輯關係的應用流程所對應的連接對象,執行步驟B;A3.確定任意一個連接對象為與該訪問請求對應的應用流程有邏輯關係的應用流程所對應的連接對象。
其中,所述應用流程屬性為用戶ID、或群組ID。
其中,該方法進一步包括資料庫連接池周期性調整連接對象數目;所述調整連接對象數目的方法為預先設置申請連接對象成功率的合理範圍,周期性統計申請連接對象的成功率,如果申請連接對象成功率低於該合理範圍的最小值,則增加連接對象數目;如果申請連接對象成功率高於該合理範圍的最大值,則減少連接對象數目;如果申請連接對象成功率在該合理範圍內,則維持連接對象數目。
其中,該方法進一步包括資料庫連接池周期性調整連接對象數目;所述調整連接對象數目的方法為預先設置連接對象佔用率的合理範圍,周期性統計連接對象的佔用率,如果連接對象佔用率低於該合理範圍的最小值,則減少連接對象數目;如果連接對象佔用率高於該合理範圍的最大值,則增加連接對象數目;如果連接對象佔用率在該合理範圍內,則維持連接對象數目。
由上述方案可以看出,本發明的關鍵在於為分配到各業務進程的應用流程中具備邏輯關係的應用流程的訪問分配同一連接對象。因此,本發明所提供的資料庫連接資源的管理方法,能夠保證資料庫訪問中數據讀取的正確性,使用戶得以靈活配置資料庫COMMIT的頻率,保證系統的I/O性能,還能夠通過動態調整連接對象數目使資料庫連接資源的有效利用率達到最優。


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

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀