国产精品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ù)庫連接方法

      文檔序號:6433529閱讀:291來源:國知局
      專利名稱:一種基于雙連接池的數(shù)據(jù)庫連接方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)庫設(shè)計領(lǐng)域技術(shù)中的數(shù)據(jù)庫連接技術(shù),特別涉及應(yīng)用于一切涉及到操作數(shù)據(jù)庫的產(chǎn)品中的數(shù)據(jù)庫連接技術(shù)。
      背景技術(shù)
      數(shù)據(jù)庫連接是一種關(guān)鍵的有限的昂貴的資源,這一點在多用戶的網(wǎng)頁應(yīng)用程序中體現(xiàn)得尤為突出。當(dāng)并發(fā)用戶較大時,許多相同的連接將反復(fù)地被打開和關(guān)閉,浪費了數(shù)據(jù)庫大量的系統(tǒng)資源,降低了訪問效率。對數(shù)據(jù)庫連接的管理能顯著影響到整個應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標(biāo)。數(shù)據(jù)庫連接池正是針對這個問題提出來的。數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個現(xiàn)有的數(shù)據(jù)庫連接,而再不是重新建立一個;釋放空閑時間超過最大空閑時間的數(shù)據(jù)庫連接來避免因為沒有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。這項技術(shù)能明顯提高對數(shù)據(jù)庫操作的性能。在傳統(tǒng)的數(shù)據(jù)庫連接模式中,客戶端程序在啟動時打開數(shù)據(jù)庫連接,在退出程序時關(guān)閉數(shù)據(jù)庫連接。這樣,在整個程序運行中,每個客戶端始終占用一個數(shù)據(jù)庫連接,即使在大量沒有數(shù)據(jù)庫操作的空閑時間,如用戶輸入數(shù)據(jù)時,從而造成數(shù)據(jù)庫連接的使用效率低下。在數(shù)據(jù)庫連接通過連接池管理的模式中,只有當(dāng)用戶真正需要進(jìn)行數(shù)據(jù)庫操作時,才從連接池申請一個連接,數(shù)據(jù)庫操作完畢,連接立即釋放到連接池中,以供其他用戶使用。這樣,不僅大大提高了數(shù)據(jù)庫連接的使用效率,使得大量用戶可以共享較少的數(shù)據(jù)庫連接,而且省去了建立連接的時間。

      發(fā)明內(nèi)容
      本發(fā)明針對Web應(yīng)用中大并發(fā)用戶時,數(shù)據(jù)庫大量的系統(tǒng)資源被浪費,訪問效率低下的問題,提供了一種基于雙連接池的數(shù)據(jù)庫連接方法。本發(fā)明的目的是允許應(yīng)用程序重復(fù)使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不是重新建立一個,從而對于數(shù)據(jù)庫操作的性能大大提高,進(jìn)而改善了整個應(yīng)用程序的伸縮性和健壯性。為此,本發(fā)明公開了一種基于雙連接池的數(shù)據(jù)庫連接方法。所述基于雙連接池的數(shù)據(jù)庫連接方法步驟如下步驟一、創(chuàng)建包含有最小連接數(shù)量的多個數(shù)據(jù)庫連接,將這些數(shù)據(jù)庫連接排隊放入可用連接池中;步驟二、當(dāng)某一用戶進(jìn)程需要進(jìn)行數(shù)據(jù)庫操作時,從可用連接池申請數(shù)據(jù)庫連接, 將可用連接池中位于隊首的數(shù)據(jù)庫連接返回給該用戶進(jìn)程,并將該數(shù)據(jù)庫連接從可用連接池的隊列中刪除;步驟三、當(dāng)需要進(jìn)行數(shù)據(jù)庫操作的用戶進(jìn)程超過最小連接數(shù)量時,再創(chuàng)建一個數(shù)據(jù)庫連接供用戶進(jìn)程使用,直到所創(chuàng)建的數(shù)據(jù)庫連接和可用連接池中原有的最小連接數(shù)量之和達(dá)到最大連接數(shù)量;步驟四、達(dá)到最大連接數(shù)量后,將需要進(jìn)行數(shù)據(jù)庫操作的用戶進(jìn)程放入等待進(jìn)程池的隊尾。優(yōu)選的是,所述的基于雙連接池的數(shù)據(jù)庫連接方法中,當(dāng)有用戶進(jìn)程完成數(shù)據(jù)庫操作時,判斷等待進(jìn)程池的隊列是否為空,若為空,則將該用戶進(jìn)程使用過的數(shù)據(jù)庫連接插入可用連接池的隊尾;若不為空,則將該用戶進(jìn)程使用過的數(shù)據(jù)庫連接傳給位于等待進(jìn)程池的隊首的用戶進(jìn)程使用。優(yōu)選的是,所述的基于雙連接池的數(shù)據(jù)庫連接方法中,當(dāng)完成數(shù)據(jù)庫操作的用戶進(jìn)程的數(shù)量增多至使得數(shù)據(jù)庫連接數(shù)量持續(xù)下降,直到降低至已連接數(shù)閥值時,將可用連接池內(nèi)的數(shù)據(jù)庫連接數(shù)量重新設(shè)定為最小連接數(shù)量。優(yōu)選的是,所述的基于雙連接池的數(shù)據(jù)庫連接方法中,所述已連接數(shù)閥值為最小連接數(shù)量的二分之一。本發(fā)明的有益效果是當(dāng)無法獲取連接時不再重試連接,而是等到等待進(jìn)程池中隊首進(jìn)程獲取到數(shù)據(jù)庫連接后才繼續(xù)執(zhí)行。而單獨采用連接池的方式會在無法獲取連接時不斷重試,直至有連接釋放,這樣進(jìn)程仍會占用一些寶貴的系統(tǒng)資源,降低數(shù)據(jù)庫的效率。 因此,雙池結(jié)構(gòu)能更有效地管理連接資源,充分發(fā)揮數(shù)據(jù)庫的性能。


      附圖1為該方法的流程圖。
      具體實施例方式下面結(jié)合附圖對本發(fā)明做進(jìn)一步說明,以使本領(lǐng)域普通技術(shù)人員參照本說明書后能夠據(jù)以實施。如圖1所示,本發(fā)明的一種基于雙連接池的數(shù)據(jù)庫連接方法,包括如下步驟步驟一、當(dāng)應(yīng)用服務(wù)器啟動時,立即創(chuàng)建包含有最小連接數(shù)量的多個數(shù)據(jù)庫連接, 將這些數(shù)據(jù)庫連接排隊放入可用連接池中,無論這些數(shù)據(jù)庫連接是否使用,它們都將一直存在,直到應(yīng)用服務(wù)關(guān)閉;步驟二、當(dāng)某一用戶進(jìn)程需要進(jìn)行數(shù)據(jù)庫操作時,從可用連接池申請數(shù)據(jù)庫連接, 首先判斷可用連接池里是否為空,若當(dāng)前的連接池不為空,將可用連接池中位于隊首的數(shù)據(jù)庫連接返回給該用戶進(jìn)程,并將該數(shù)據(jù)庫連接從可用連接池的隊列中刪除;步驟三、若當(dāng)前可用連接池為空當(dāng),說明目前無可用的數(shù)據(jù)庫連接,那么系統(tǒng)將進(jìn)行數(shù)據(jù)庫操作的用戶進(jìn)程數(shù)量判斷。當(dāng)需要進(jìn)行數(shù)據(jù)庫操作的用戶進(jìn)程超過最小連接數(shù)量,未達(dá)到所創(chuàng)建的數(shù)據(jù)庫連接的最大連接數(shù)量時,再創(chuàng)建一個數(shù)據(jù)庫連接供用戶進(jìn)程使用;步驟四、當(dāng)需要進(jìn)行數(shù)據(jù)庫操作的用戶進(jìn)程等于或超過所創(chuàng)建的數(shù)據(jù)庫連接的最大連接數(shù)量時,將需要進(jìn)行數(shù)據(jù)庫操作的用戶進(jìn)程放入等待進(jìn)程池的隊尾。步驟五、當(dāng)有用戶進(jìn)程完成數(shù)據(jù)庫操作時,判斷等待進(jìn)程池的隊列是否為空,若為空,則將該用戶進(jìn)程使用過的數(shù)據(jù)庫連接插入可用連接池的隊尾;若不為空,則將該用戶進(jìn)程使用過的數(shù)據(jù)庫連接傳給位于等待進(jìn)程池的隊首的用戶進(jìn)程使用。當(dāng)完成數(shù)據(jù)庫操作的用戶進(jìn)程的數(shù)量增多至使得數(shù)據(jù)庫連接數(shù)量持續(xù)下降,直到降低至已連接數(shù)閥值時,將可用連接池內(nèi)的數(shù)據(jù)庫連接數(shù)量重新設(shè)定為最小連接數(shù)量。另一種實現(xiàn)形式是步驟一、當(dāng)應(yīng)用服務(wù)啟動時,即創(chuàng)建多個數(shù)據(jù)庫連接,放入可用連接池中,其數(shù)量等于最小連接數(shù),無論這些數(shù)據(jù)庫連接是否使用,它們將一直存在直到應(yīng)用服務(wù)關(guān)閉。等待進(jìn)程池為空。步驟二、當(dāng)某一用戶進(jìn)程需要進(jìn)行數(shù)據(jù)庫操作時,需從可用連接池申請數(shù)據(jù)庫連接。首先判斷可用連接池是否為空,所謂的可用連接池是預(yù)先設(shè)定一定數(shù)據(jù)的連接存放在連接池里面供后面的請求使用。若可用連接池的隊列不為空,則將可用連接池隊頭的數(shù)據(jù)庫連接返回給用戶進(jìn)程,并將該數(shù)據(jù)庫連接從可用連接池的隊列中刪除。若可用連接池的隊列為空,分兩種情況,一種情況是總連接數(shù)小于最大連接數(shù),則再創(chuàng)建一個數(shù)據(jù)庫連接供用戶進(jìn)程使用,總連接數(shù)加一;另一種情況是總連接數(shù)等于或大于最大連接數(shù),說明連接池不能提供連接給當(dāng)前的請求,此時將當(dāng)前請求進(jìn)程放入到等待進(jìn)程池中進(jìn)行等待,則用戶進(jìn)程插入等待進(jìn)程池的隊尾。步驟三、在一個進(jìn)程進(jìn)行數(shù)據(jù)庫操作結(jié)束后,當(dāng)前使用的連接將釋放掉,判斷等待進(jìn)程池的隊列是否為空,若為空,則將該用戶進(jìn)程使用的數(shù)據(jù)庫連接插入可用連接池的隊尾;若不為空,則將該用戶進(jìn)程使用的數(shù)據(jù)庫連接傳給等待進(jìn)程池的隊頭進(jìn)程使用。盡管本發(fā)明的實施方案已公開如上,但其并不僅僅限于說明書和實施方式中所列運用,它完全可以被適用于各種適合本發(fā)明的領(lǐng)域,對于熟悉本領(lǐng)域的人員而言,可容易地實現(xiàn)另外的修改,因此在不背離權(quán)利要求及等同范圍所限定的一般概念下,本發(fā)明并不限于特定的細(xì)節(jié)和這里示出與描述的圖例。
      權(quán)利要求
      1.一種基于雙連接池的數(shù)據(jù)庫連接方法,其特征在于,包括以下步驟步驟一、創(chuàng)建包含有最小連接數(shù)量的多個數(shù)據(jù)庫連接,將這些數(shù)據(jù)庫連接排隊放入可用連接池中;步驟二、當(dāng)某一用戶進(jìn)程需要進(jìn)行數(shù)據(jù)庫操作時,從可用連接池申請數(shù)據(jù)庫連接,將可用連接池中位于隊首的數(shù)據(jù)庫連接返回給該用戶進(jìn)程,并將該數(shù)據(jù)庫連接從可用連接池的隊列中刪除;步驟三、當(dāng)需要進(jìn)行數(shù)據(jù)庫操作的用戶進(jìn)程超過最小連接數(shù)量時,再創(chuàng)建一個數(shù)據(jù)庫連接供用戶進(jìn)程使用,直到所創(chuàng)建的數(shù)據(jù)庫連接和可用連接池中原有的最小連接數(shù)量之和達(dá)到最大連接數(shù)量;步驟四、達(dá)到最大連接數(shù)量后,將需要進(jìn)行數(shù)據(jù)庫操作的用戶進(jìn)程放入等待進(jìn)程池的隊尾。
      2.如權(quán)利要求1所述的基于雙連接池的數(shù)據(jù)庫連接方法,其特征在于,當(dāng)有用戶進(jìn)程完成數(shù)據(jù)庫操作時,判斷等待進(jìn)程池的隊列是否為空,若為空,則將該用戶進(jìn)程使用過的數(shù)據(jù)庫連接插入可用連接池的隊尾;若不為空,則將該用戶進(jìn)程使用過的數(shù)據(jù)庫連接傳給位于等待進(jìn)程池的隊首的用戶進(jìn)程使用。
      3.如權(quán)利要求1所述的基于雙連接池的數(shù)據(jù)庫連接方法,其特征在于,當(dāng)完成數(shù)據(jù)庫操作的用戶進(jìn)程的數(shù)量增多至使得數(shù)據(jù)庫連接數(shù)量持續(xù)下降,直到降低至已連接數(shù)閥值時,將可用連接池內(nèi)的數(shù)據(jù)庫連接數(shù)量重新設(shè)定為最小連接數(shù)量。
      4.如權(quán)利要求1所述的基于雙連接池的數(shù)據(jù)庫連接方法,其特征在于,所述已連接數(shù)閥值為最小連接數(shù)量的二分之一。
      全文摘要
      本發(fā)明公開了一種基于雙連接池的數(shù)據(jù)庫連接方法。包括步驟先創(chuàng)建包含有最小連接數(shù)量的多個數(shù)據(jù)庫連接放入可用連接池中。當(dāng)某一用戶進(jìn)程需要進(jìn)行數(shù)據(jù)庫操作時,從可用連接池申請數(shù)據(jù)庫連接,當(dāng)需要進(jìn)行數(shù)據(jù)庫操作的用戶進(jìn)程超過最小連接數(shù)量時,再創(chuàng)建一個數(shù)據(jù)庫連接供用戶進(jìn)程使用,直到所創(chuàng)建的數(shù)據(jù)庫連接和可用連接池中原有的最小連接數(shù)量之和達(dá)到最大連接數(shù)量。達(dá)到最大連接數(shù)量后,將需要進(jìn)行數(shù)據(jù)庫操作的用戶進(jìn)程放入等待進(jìn)程池的隊尾。在一個進(jìn)程進(jìn)行數(shù)據(jù)庫操作結(jié)束后,當(dāng)前使用的連接將釋放掉,如果等待進(jìn)程池不為空,那么將釋放的連接給等待進(jìn)程池的對頭,激活等待進(jìn)程池的對頭進(jìn)行數(shù)據(jù)庫操作,如果等待進(jìn)程池為空,那么當(dāng)前被釋放的連接直接放入可用進(jìn)程池供下一個應(yīng)用請求使用。本發(fā)明提供了一套有效的方法來使數(shù)據(jù)庫操作的性能大大提高,進(jìn)而改善了整個應(yīng)用程序的伸縮性和健壯性。
      文檔編號G06F17/30GK102346767SQ20111027881
      公開日2012年2月8日 申請日期2011年9月19日 優(yōu)先權(quán)日2011年9月19日
      發(fā)明者劉天倫, 施霖, 李躍海 申請人:北京金和軟件股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1