一種資料庫的連接控制方法及裝置的製作方法
2023-11-11 10:15:12 1
專利名稱:一種資料庫的連接控制方法及裝置的製作方法
技術領域:
本發明屬於資料庫訪問技術,尤其涉及一種資料庫的連接控制方法及裝置。
背景技術:
如今,大量應用需要訪問資料庫以獲得所需要的數據。一般在資料庫的應用中使用連接來進行與資料庫之間的交互。在實際情況中,每一次應用請求都要建立一次資料庫連接。具體做法如下首先,建立資料庫連接;其次,打開資料庫連接;再次,運用該連接執行SQL語句;最後,關閉資料庫連接,釋放資料庫連接資源。然而,上述做法存在如下缺陷(1)當有大量資料庫操作時,建立的大量資料庫連接得不到及時釋放,導致內存上升,嚴重時會使程序崩潰;(2)建立資料庫連接後,需要打開連接,打開連接耗時較長,當有大量資料庫並發操作時,會導致資料庫執行效率大幅下降;C3)打開資料庫連接後,執行完SQL語句僅將連接釋放,資料庫連接資源沒有得到循環利用,導致效率降低。
發明內容
本發明提供一種資料庫的連接控制方法及裝置以解決上述問題。本發明提供一種資料庫的連接控制方法,包括以下步驟。資料庫執行進程從資料庫調度進程接收資料庫操作請求。資料庫執行進程判斷資料庫操作請求的類型。控制進程根據資料庫操作請求的類型及調用策略調用相應數目的連接,以根據資料庫操作請求的業務類型你管訪問對應的資料庫執行資料庫操作請求。於連接執行資料庫操作請求後,資料庫執行進程將處於打開狀態的連接放回至資料庫連接堆棧,供下一次調用。控制進程根據關閉策略關閉資料庫連接堆棧內相應數目的處於打開狀態的連接。本發明還提供一種資料庫的連接控制裝置,包括接收模塊、判斷模塊、連接管理模塊以及控制模塊。接收模塊用於從資料庫調用進程接收資料庫操作請求。判斷模塊與接收模塊相連,並用於判斷資料庫操作請求的類型。連接管理模塊與判斷模塊相連。控制模塊與連接管理模塊相連,用於根據資料庫操作請求的類型及調用策略調用相應數目的連接,以根據資料庫操作請求的業務類型訪問對應的資料庫執行資料庫操作請求。於連接執行資料庫操作請求後,連接管理模塊用於將處於打開狀態的連接放回至資料庫連接堆棧,供下一次調用,控制模塊根據關閉策略關閉資料庫連接堆棧內相應數目的處於打開狀態的連接。相較於先前技術,根據本發明提供的資料庫的連接控制方法及裝置,連接根據資料庫操作請求的業務類型訪問對應的資料庫執行資料庫操作請求,從而提高資料庫執行效率。另外,通過控制進程根據調用策略及關閉策略控制資料庫連接堆棧內連接的打開調用與關閉,從而提高連接的利用率。此外,通過資料庫連接堆棧實現資料庫連接的循環使用, 同時防止建立過多資料庫連接佔用系統內存。而且,於連接執行資料庫操作請求後,處於打開狀態的連接將被放回至資料庫連接堆棧。如此,可循環使用已經打開的連接,從而提高連接的使用效率。另外,根據資料庫操作請求的類型調用與其相對應的資料庫連接堆棧內的連接,如此,對資料庫操作進行分離,提高資料庫執行效率。
此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用於解釋本發明,並不構成對本發明的不當限定。在附圖中圖1所示為根據本發明的較佳實施例提供的資料庫的連接控制方法的流程圖;圖2所示為根據本發明的較佳實施例提供的資料庫的連接控制方法的流程圖;圖3所示為根據本發明的較佳實施例提供的資料庫的連接控制裝置的示意圖。
具體實施例方式下文中將參考附圖並結合實施例來詳細說明本發明。需要說明的是,在不衝突的情況下,本申請中的實施例及實施例中的特徵可以相互組合。圖1所示為根據本發明的較佳實施例提供的資料庫的連接控制方法的流程圖。如圖ι所示,本發明較佳實施例提供的資料庫的連接控制方法包括步驟101 105。於步驟 101中,資料庫執行進程從資料庫調度進程接收資料庫數據請求。於步驟102中,資料庫執行進程判斷資料庫操作請求的類型。於步驟103中,控制進程根據資料庫操作請求的類型及調用策略調用相應數目的連接,以根據資料庫操作請求的業務類型訪問對應的資料庫執行資料庫操作請求。於步驟104中,於連接執行資料庫操作請求後,資料庫執行進程將處於打開狀態的連接放回至資料庫連接堆棧,供下一次調用。於步驟105中,控制進程根據關閉策略關閉資料庫連接堆棧內相應數目的處於打開狀態的連接。其中,關閉策略為於資料庫連接堆棧內正在執行資料庫操作請求的連接數目與處於打開狀態的連接數目的比值小於或等於預設值時,按照預設的百分比關閉資料庫連接堆棧內多餘的處於打開狀態的連接。調用策略包括於當前資料庫操作請求的數目小於或等於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目時,調用資料庫連接堆棧內相應數目的處於打開狀態但未執行操作的連接;於當前資料庫操作請求的數目大於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目且小於或等於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目與處於關閉狀態的連接的數目之和時,調用資料庫連接堆棧內處於打開狀態但未執行操作的連接,且打開並調用所述資料庫連接堆棧內相應數目的處於關閉狀態的連接;於當前資料庫操作請求的數目大於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目與處於關閉狀態的連接的數目之和時,調用資料庫連接堆棧內處於打開狀態但未執行操作的連接,打開並調用所述資料庫連接堆棧內全部處於關閉狀態的連接,並調用其他資料庫連接堆棧內的空餘可用連接,若所述空餘可用連接處於關閉狀態,則打開並調用所述空餘可用連接。如下對上述過程進行詳細說明。請參考圖2。圖2所示為根據本發明的較佳實施例提供的資料庫的連接控制方法的流程圖。如圖2所示,本實施例提供的資料庫的連接控制方法包括步驟201 206。於步驟201中,資料庫調度進程從業務邏輯進程接收資料庫操作請求。於步驟202中,資料庫調度進程根據資料庫操作請求的業務類型的優先級以及業務類型與資料庫執行進程的映射關係將資料庫操作請求發送至對應的資料庫執行進程。於此,資料庫操作請求的業務類型包括用戶信息管理、離線信息管理以及聊天信息管理。然而,本發明對此不作限定。於實際應用中,可根據需要設置其他的業務類型。具體而言,當資料庫調度進程接收資料庫操作請求後,根據資料庫操作請求的業務類型的優先級,採用任務隊列管理資料庫操作請求的執行順序。於此,優先執行業務類型優先級較高的資料庫操作請求。舉例而言,用戶信息管理的優先級高於離線信息管理及聊天信息管理,離線信息管理的優先級高於聊天信息管理,此時,對用戶信息管理的操作(例如,查詢或修改)優先處理,接著,對離線信息管理及聊天信息管理的操作依次執行。此外,資料庫調度進程根據業務類型與資料庫執行進程的映射關係將資料庫操作請求發送至對應的資料庫執行進程。舉例而言,若關於用戶信息管理的業務類型對應於資料庫執行進程1,關於離線信息管理的業務類型對應於資料庫執行進程2,關於聊天信息管理的業務類型對應於資料庫執行進程3,結合上述業務類型的優先級,則資料庫調度進程優先將有關用戶信息管理的資料庫操作請求發送至資料庫執行進程1,然後依次將有關離線信息管理的資料庫操作請求發送至資料庫執行進程2,將有關聊天信息管理的資料庫操作請求發送至資料庫執行進程3。於步驟203中,資料庫執行進程接收資料庫操作請求後判斷資料庫操作請求的類型。於此,資料庫操作請求的類型包括查詢、增加、刪除以及修改。然而,本發明並不限定於此。具體而言,當資料庫執行進程接收資料庫操作請求後,首先將接收到的資料庫操作請求放入任務隊列中。然後,資料庫執行進程按照任務隊列調度的資料庫操作請求,判斷資料庫操作請求的類型。然而,本發明並不限定於此。於其他實施例中,資料庫執行進程接收資料庫操作請求後可先判斷資料庫操作請求的類型,然後,按照資料庫操作請求的類型將資料庫操作請求放入不同的任務隊列中,供後續執行。接下來,以查詢操作為例進行詳細說明,其他操作的執行與查詢操作的執行相同, 故於此不再贅述。於本實施例中,根據資料庫操作請求的類型,對不同的資料庫操作請求首先調用其對應的資料庫連接堆棧內的連接,以執行所述資料庫操作請求,從而提高資料庫執行效率。於步驟204中,控制進程根據調用策略調用相應數目的連接,以根據資料庫查詢請求的業務類型訪問對應的資料庫執行資料庫查詢請求。其中,調用策略包括如下三個方於當前資料庫查詢請求的數目小於或等於資料庫查詢連接堆棧內處於打開狀態但未執行操作的連接的數目時,調用資料庫查詢連接堆棧內相應數目的所述處於打開狀態但未執行操作的連接,以執行當前資料庫查詢請求。舉例而言,若當前資料庫查詢請求有5 個,資料庫查詢連接堆棧內正在執行操作的連接數目為4個,資料庫查詢連接堆棧內已經打開的連接數目為10個,則調用資料庫查詢連接堆棧內5個已經打開的連接執行當前5個資料庫查詢請求。於當前資料庫查詢請求的數目大於資料庫查詢連接堆棧內處於打開狀態但未執行操作的連接的數目且小於或等於資料庫查詢連接堆棧內處於打開狀態但未執行操作的連接的數目與處於關閉狀態的連接的數目之和時,調用資料庫查詢連接堆棧內處於打開狀態但未執行操作的連接,且打開並調用資料庫查詢連接堆棧內相應數目的處於關閉狀態的連接。舉例而言,若當前資料庫查詢請求有10個,資料庫查詢連接堆棧內設置的連接總數為20個,已經打開的連接數目為10個,正在執行操作的連接數目為4個,則調用資料庫查詢連接堆棧內6個處於打開狀態但未執行操作的連接,且打開並調用4個處於關閉狀態的連接。於當前資料庫查詢請求的數目大於資料庫查詢連接堆棧內處於打開狀態但未執行操作的連接的數目與處於關閉狀態連接的數目之和時,調用資料庫查詢連接堆棧內處於打開狀態但未執行操作的連接,打開並調用資料庫查詢連接堆棧內全部處於關閉狀態的連接,並調用其他資料庫連接堆棧(例如,資料庫刪除連接堆棧、資料庫修改連接堆棧、資料庫增加連接堆棧)內的空餘可用連接,若所述空餘可用連接處於關閉狀態,則打開並調用所述空餘可用連接。舉例而言,若當前資料庫查詢請求有10個,資料庫查詢連接堆棧內設置的連接總數為20個,已經打開的連接數目為18個,正在執行操作的連接數目為15個,則調用資料庫查詢連接堆棧內3個處於打開狀態但未執行操作的連接,打開並調用2個處於關閉狀態的連接,並調用資料庫修改連接堆棧內5個空餘可用連接。關於控制進程調用其他資料庫連接堆棧內的空餘可用連接的過程以資料庫修改連接堆棧為例說明如下。控制進程鎖定資料庫修改連接堆棧,並調用資料庫修改連接堆棧內相應數目的空餘可用連接。於控制進程解除資料庫修改連接堆棧的鎖定後,上述空餘可用連接執行相應數目的資料庫查詢請求。其中,若上述空餘可用連接處於打開狀態,則直接調用上述空餘可用連接執行資料庫查詢請求;若上述空餘可用連接處於關閉狀態,則需先打開上述連接再執行資料庫查詢請求。另外,以下具體說明步驟204中連接根據資料庫查詢請求的業務類型訪問對應的資料庫執行資料庫查詢請求的過程。舉例而言,資料庫查詢請求的業務類型包括用戶信息查詢、離線信息查詢以及聊天信息查詢。相應地,資料庫包括用戶信息資料庫、離線信息資料庫以及聊天信息資料庫。當資料庫查詢請求的業務類型為用戶信息查詢時,控制進程調用的連接訪問對應的用戶信息資料庫,以查詢用戶信息;當資料庫查詢請求的業務類型為離線信息查詢時,控制進程調用的連接訪問對應的離線信息資料庫;當資料庫查詢請求的業務類型為聊天信息查詢時,控制進程調用的連接訪問對應的聊天信息資料庫。於此,控制進程調用的連接可訪問不同的資料庫。然而,本發明並不限定於此。於其他實施例中,控制進程調用的連接可根據資料庫操作請求的業務類型設置為訪問對應類型的資料庫。於步驟205中,於連接執行資料庫查詢請求後,資料庫執行進程將處於打開狀態的連接放回至資料庫連接堆棧,供下一次調用。於此,當資料庫查詢請求均由資料庫查詢連接堆棧內的連接執行時,資料庫執行進程將執行完畢處於打開狀態的連接均放回至資料庫查詢連接堆棧。當資料庫查詢請求由資料庫查詢連接堆棧及資料庫修改連接堆棧內的連接共同執行時,資料庫執行進程可將執行完畢處於打開狀態的連接放回至資料庫查詢連接堆棧或者資料庫查詢連接堆棧與資料庫修改連接堆棧內。然而,本發明對此並不限定。其中需要注意的是,當資料庫執行進程將執行完畢處於打開狀態的連接放回至資料庫修改連接堆棧時,需先鎖定資料庫修改連接堆棧,並於放回連接後,解除對資料庫修改連接堆棧的鎖定。如此,資料庫連接堆棧內的連接可循環使用,從而提高利用率。而且,連接一旦被打開後一直處於打開狀態,從而極大程度地節省了連接打開所耗費的時間,提高了資料庫的執行效率。於步驟206中,控制進程根據關閉策略關閉資料庫查詢連接堆棧內相應數目的處於打開狀態的連接。其中,關閉策略具體描述如下。於資料庫查詢連接堆棧內正在執行資料庫操作請求的連接數目與處於打開狀態的連接數目的比值小於或等於預設值(例如, 70%)時,按照預設的百分比(例如,80%)關閉資料庫查詢連接堆棧內多餘的處於打開狀態的連接。其中,需要關閉的處於打開狀態的連接的數目等於處於打開狀態的連接的數目與正在執行操作的連接的數目的差值與預設的百分比的乘積。舉例而言,若資料庫查詢連接堆棧內正在執行資料庫操作請求的連接數目為60個,資料庫查詢連接堆棧內處於打開狀態的連接數目為100個,兩者的比值小於預設值(70%),則按照預設的百分比(80%)關閉資料庫查詢連接堆棧內32個處於打開狀態的連接。於實際應用中,若經過計算得到的需要關閉的處於打開狀態的連接的數目並非為整數,則將計算得到的上述數目以四捨五入的方式取整,以確定需要關閉的處於打開狀態的連接的數目。舉例而言,若資料庫查詢連接堆棧內正在執行資料庫操作請求的連接數目為65個,資料庫查詢連接堆棧內處於打開狀態的連接數目為100個,兩者的比值小於預設值(70%),則按照預設的百分比(75%)關閉資料庫查詢連接堆棧內沈個(實際計算數值為26. 25,四捨五入取整為26)處於打開狀態的連接。此外,於本實施例中,控制進程對連接的打開調用可為實時控制,對連接的關閉控制可為實時控制亦可為定時控制。例如,控制進程每隔30分鐘根據關閉策略關閉資料庫連接堆棧內相應數目的處於打開狀態的連接。然而,本發明對此不作任何限定。圖3所示為根據本發明較佳實施例提供的資料庫的連接控制裝置的示意圖。如圖 3所示,本實施例提供的資料庫連接控制管理裝置包括調度模塊300、接收模塊301、判斷模塊302、連接管理模塊303以及控制模塊304。其中,調度模塊300與接收模塊301相連,判斷模塊302與接收模塊301相連,連接管理模塊303與判斷模塊302相連,控制模塊304與連接管理模塊303相連。然而,本發明並不限定於此。於本實施例中,調度模塊300用於從業務邏輯進程接收資料庫操作請求,並根據資料庫操作請求的業務類型的優先級及業務類型與資料庫執行進程的映射關係將資料庫操作請求發送至對應的接收模塊301。接收模塊301用於從調度模塊300接收資料庫操作請求。判斷模塊302用於判斷接收到的資料庫操作請求的類型。控制模塊304用於根據資料庫操作請求的類型及調用策略調用相應數目的連接,以根據資料庫操作請求的業務類型訪問對應的資料庫執行資料庫操作請求。於連接執行資料庫操作請求後,連接管理模塊303 將處於打開狀態的連接放回至資料庫連接堆棧,供下一次調用。控制模塊304根據關閉策略關閉資料庫連接堆棧內相應數目的處於打開狀態的連接。具體過程同前所述,故於此不再贅述。綜上所述,根據本發明較佳實施例提供的資料庫的連接控制方法及裝置,連接根據資料庫操作請求的業務類型訪問對應的資料庫執行資料庫操作請求,從而提高資料庫執行效率。另外,通過控制進程根據調用策略及關閉策略控制資料庫連接堆棧內連接的打開調用與關閉,從而提高連接的利用率。此外,通過資料庫連接堆棧實現資料庫連接的循環使用,同時防止建立過多資料庫連接佔用系統內存。而且,於連接執行資料庫操作請求後,處於打開狀態的連接被放回至資料庫連接堆棧。如此,可循環使用已經打開的連接,從而提高連接的使用效率。另外,根據資料庫操作請求的類型調用與其相對應的資料庫連接堆棧內的連接,如此,對資料庫操作進行分離,提高資料庫執行效率。 以上所述僅為本發明的優選實施例而已,並不用於限制本發明,對於本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。
權利要求
1.一種資料庫的連接控制方法,其特徵在於,包括以下步驟資料庫執行進程從資料庫調度進程接收資料庫操作請求;所述資料庫執行進程判斷所述資料庫操作請求的類型;控制進程根據所述資料庫操作請求的類型及調用策略調用相應數目的連接,以根據資料庫操作請求的業務類型訪問對應的資料庫執行所述資料庫操作請求;於所述連接執行所述資料庫操作請求後,所述資料庫執行進程將所述處於打開狀態的連接放回至資料庫連接堆棧,供下一次調用;所述控制進程根據關閉策略關閉所述資料庫連接堆棧內相應數目的處於打開狀態的連接。
2.根據權利要求1所述的資料庫的連接控制方法,其特徵在於,所述關閉策略為於資料庫連接堆棧內正在執行資料庫操作請求的連接數目與處於打開狀態的連接數目的比值小於或等於預設值時,按照預設的百分比關閉資料庫連接堆棧內多餘的處於打開狀態的連接。
3.根據權利要求1所述的資料庫的連接控制方法,其特徵在於,所述調用策略包括 於當前資料庫操作請求的數目小於或等於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目時,調用資料庫連接堆棧內相應數目的所述處於打開狀態但未執行操作的連接;於當前資料庫操作請求的數目大於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目且小於或等於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目與處於關閉狀態的連接的數目之和時,調用所述資料庫連接堆棧內處於打開狀態但未執行操作的連接,且打開並調用所述資料庫連接堆棧內相應數目的處於關閉狀態的連接;於當前資料庫操作請求的數目大於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目與處於關閉狀態的連接的數目之和時,調用所述資料庫連接堆棧內處於打開狀態但未執行操作的連接,打開並調用所述資料庫連接堆棧內全部處於關閉狀態的連接,並調用其他資料庫連接堆棧內的空餘可用連接,若所述空餘可用連接處於關閉狀態,則打開並調用所述空餘可用連接。
4.根據權利要求1所述的資料庫的連接控制方法,其特徵在於,所述業務類型包括用戶信息管理、離線信息管理以及聊天信息管理。
5.根據權利要求1所述的資料庫的連接控制方法,其特徵在於,所述資料庫操作請求的類型包括查詢、增加、刪除、修改,所述資料庫連接堆棧包括資料庫查詢連接堆棧、資料庫增加連接堆棧、資料庫刪除連接堆棧及資料庫修改連接堆棧。
6.一種資料庫的連接控制裝置,其特徵在於,包括接收模塊,用於從資料庫調度進程接收資料庫操作請求;判斷模塊,與所述接收模塊相連,用於判斷所述資料庫操作請求的類型;連接管理模塊,與所述判斷模塊相連;控制模塊,與所述連接管理模塊相連,用於根據所述資料庫操作請求的類型及調用策略調用相應數目的連接,以根據資料庫操作請求的業務類型訪問對應的資料庫執行所述資料庫操作請求,於所述連接執行所述資料庫操作請求後,所述連接管理模塊將所述處於打開狀態的連接放回至資料庫連接堆棧,供下一次調用,所述控制模塊根據關閉策略關閉所述資料庫連接堆棧內相應數目的處於打開狀態的連接。
7.根據權利要求6所述的資料庫的連接控制裝置,其特徵在於,所述關閉策略為於資料庫連接堆棧內正在執行資料庫操作請求的連接數目與處於打開狀態的連接數目的比值小於或等於預設值時,按照預設的百分比關閉資料庫連接堆棧內多餘的處於打開狀態的連接。
8.根據權利要求6所述的資料庫的連接控制裝置,其特徵在於,所述調用策略包括 於當前資料庫操作請求的數目小於或等於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目時,調用資料庫連接堆棧內相應數目的所述處於打開狀態但未執行操作的連接;於當前資料庫操作請求的數目大於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目且小於或等於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目與處於關閉狀態的連接的數目之和時,調用所述資料庫連接堆棧內處於打開狀態但未執行操作的連接,且打開並調用所述資料庫連接堆棧內相應數目的處於關閉狀態的連接;於當前資料庫操作請求的數目大於資料庫連接堆棧內處於打開狀態但未執行操作的連接的數目與處於關閉狀態的連接的數目之和時,調用所述資料庫連接堆棧內處於打開狀態但未執行操作的連接,打開並調用所述資料庫連接堆棧內全部處於關閉狀態的連接,並調用其他資料庫連接堆棧內的空餘可用連接,若所述空餘可用連接處於關閉狀態,則打開並調用所述空餘可用連接。
9.根據權利要求6所述的資料庫的連接控制裝置,其特徵在於,所述業務類型包括用戶信息管理、離線信息管理以及聊天信息管理。
10.根據權利要求6所述的資料庫的連接控制裝置,其特徵在於,所述資料庫操作請求的類型包括查詢、增加、刪除及修改,所述資料庫連接堆棧包括資料庫查詢連接堆棧、資料庫增加連接堆棧、資料庫刪除連接堆棧及資料庫修改連接堆棧。
全文摘要
本發明提供一種資料庫的連接控制方法及裝置。上述方法包括以下步驟。資料庫執行進程從資料庫調度進程接收資料庫操作請求。資料庫執行進程判斷資料庫操作請求的類型。控制進程根據資料庫操作請求的類型及調用策略調用相應數目的連接,以根據資料庫操作請求的業務類型訪問對應的資料庫執行資料庫操作請求。於連接執行資料庫操作請求後,資料庫執行進程將處於打開狀態的連接放回至資料庫連接堆棧,供下一次調用。控制進程根據關閉策略關閉資料庫連接堆棧內相應數目的處於打開狀態的連接。
文檔編號G06F17/30GK102262655SQ201110161300
公開日2011年11月30日 申請日期2011年6月16日 優先權日2011年6月16日
發明者胡加明 申請人:蘇州闊地網絡科技有限公司