數(shù)據(jù)庫連接池_第1頁
數(shù)據(jù)庫連接池_第2頁
數(shù)據(jù)庫連接池_第3頁
數(shù)據(jù)庫連接池_第4頁
數(shù)據(jù)庫連接池_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

數(shù)據(jù)庫連接池第一頁,共二十六頁,編輯于2023年,星期三學習內(nèi)容:為什么使用連接池可以使用哪些連接池如何在程序中使用連接池常見連接池使用舉例第二頁,共二十六頁,編輯于2023年,星期三一、為什么使用連接池為什么要使用連接池任何應(yīng)用程序都必須先擁有一個活動的數(shù)據(jù)庫連接,然后才能訪問數(shù)據(jù)庫。數(shù)據(jù)庫連接是一個很占資源且I/O開銷很大的操作,并且如果每次想使用數(shù)據(jù)庫連接時都必須創(chuàng)建它,那么它將會成為程序性能的瓶頸。第三頁,共二十六頁,編輯于2023年,星期三一、為什么使用連接池例如在JavaBean中操作數(shù)據(jù)庫,一般的思路是把Connection對象作為Bean的一個屬性,然后在構(gòu)造函數(shù)中創(chuàng)建并初始化該對象,創(chuàng)建的方法是使用DriverManager.getConnection()。使用完成后調(diào)用close()方法進行關(guān)閉。第四頁,共二十六頁,編輯于2023年,星期三一、為什么使用連接池前述的JavaBean一般會在應(yīng)用程序中多次使用。這樣就會帶來一個不好的結(jié)果:每次調(diào)用Bean對象,都會通過構(gòu)造函數(shù)創(chuàng)建其Connection對象。JDBC創(chuàng)建與銷毀連接對象是一個資源開銷極大的操作,尤其在大量用戶并發(fā)訪問應(yīng)用程序時,這個現(xiàn)象會更加明顯。第五頁,共二十六頁,編輯于2023年,星期三一、為什么使用連接池數(shù)據(jù)庫連接是一種關(guān)鍵的有限的昂貴的資源,這一點在多用戶并發(fā)的應(yīng)用程序中體現(xiàn)得尤為突出。對數(shù)據(jù)庫連接的管理能顯著影響到整個應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標。數(shù)據(jù)庫連接池正是針對這個問題提出來的。第六頁,共二十六頁,編輯于2023年,星期三一、為什么使用連接池數(shù)據(jù)庫連接池負責分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個現(xiàn)有的數(shù)據(jù)庫連接,而再不是重新建立一個;釋放空閑時間超過最大空閑時間的數(shù)據(jù)庫連接來避免因為沒有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。這樣一來可以大大減小應(yīng)用程序中頻繁創(chuàng)建和銷毀連接對象的操作次數(shù),降低服務(wù)器端的開銷。這項技術(shù)能明顯提高對數(shù)據(jù)庫操作的性能。第七頁,共二十六頁,編輯于2023年,星期三一、為什么使用連接池數(shù)據(jù)庫連接池在初始化時將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,這些數(shù)據(jù)庫連接的數(shù)量是由最小數(shù)據(jù)庫連接數(shù)來設(shè)定的。無論這些數(shù)據(jù)庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量。連接池的最大數(shù)據(jù)庫連接數(shù)量限定了這個連接池能占有的最大連接數(shù),當應(yīng)用程序向連接池請求的連接數(shù)超過最大連接數(shù)量時,這些請求將被加入到等待隊列中。第八頁,共二十六頁,編輯于2023年,星期三二、可以使用哪些連接池1、可以自己寫一個連接池類,然后使用它。當然寫一個性能穩(wěn)定的連接池類是較為復(fù)雜的一件事情。2、使用J2EE服務(wù)器自帶連接池,如Tomcat自帶的連接池。3、可以使用開源連接池。第九頁,共二十六頁,編輯于2023年,星期三二、可以使用哪些連接池開源連接池1、C3P0:C3P0是一個開放源代碼的JDBC連接池,它在lib目錄中與Hibernate一起發(fā)布,包括了實現(xiàn)jdbc3和jdbc2擴展規(guī)范說明的Connection和Statement池的DataSources對象。第十頁,共二十六頁,編輯于2023年,星期三二、可以使用哪些連接池2、Proxool:這是一個JavaSQLDriver驅(qū)動程序,提供了對你選擇的其它類型的驅(qū)動程序的連接池封裝??梢苑浅:唵蔚囊浦驳浆F(xiàn)存的代碼中。完全可配置??焖?,成熟,健壯??梢酝该鞯貫槟悻F(xiàn)存的JDBC驅(qū)動程序增加連接池功能。第十一頁,共二十六頁,編輯于2023年,星期三二、可以使用哪些連接池3、JakartaDBCP

:DBCP是一個依賴Jakartacommons-pool對象池機制的數(shù)據(jù)庫連接池,DBCP可以直接的在應(yīng)用程序用使用。第十二頁,共二十六頁,編輯于2023年,星期三二、可以使用哪些連接池4、BoneCP:BoneCP是一個快速,開源的數(shù)據(jù)庫連接池。幫你管理數(shù)據(jù)連接讓你的應(yīng)用程序能更快速地訪問數(shù)據(jù)庫。比C3P0/DBCP連接池快25倍。第十三頁,共二十六頁,編輯于2023年,星期三二、可以使用哪些連接池5、其它開源連接池:DDConnectionBroker、DBPool、XAPool、Primrose、SmartPool、MiniConnectionPoolManager等。第十四頁,共二十六頁,編輯于2023年,星期三三、如何在程序中使用連接池在Java程序中,可以引入連接池需要的jar包,然后使用連接池中的相關(guān)類進行配置,最后得到連接對象。見文檔2.doc。第十五頁,共二十六頁,編輯于2023年,星期三三、如何在程序中使用連接池但是這種操作是利用BoneCP提供的連接池相關(guān)類進行的,而不是直接使用JDBC來管理連接的,因此在得到連接對象之前,使用者只能使用BoneCP提供的API,而不是統(tǒng)一的JDBCAPI。適合在非J2EE環(huán)境下使用。第十六頁,共二十六頁,編輯于2023年,星期三三、如何在程序中使用連接池在JDBC2.0中,引入了數(shù)據(jù)源(DataSource)的概念。目前在J2EE應(yīng)用中,通過DataSource獲取數(shù)據(jù)庫連接是首選方式,因為這樣一來,使用者使用的是統(tǒng)一的JDBCAPI。第十七頁,共二十六頁,編輯于2023年,星期三三、如何在程序中使用連接池通常DataSource對象是從連接池提供連接,一般對于不同的J2EE服務(wù)器,或不同的數(shù)據(jù)源類型,雖然數(shù)據(jù)源的配置內(nèi)容不盡相同,但是只要配置完成后,程序中使用DataSource提供的API就可以得到連接池中的連接,非常方便。第十八頁,共二十六頁,編輯于2023年,星期三三、如何在程序中使用連接池使用DataSource的優(yōu)勢使用DataSource接口會使得程序變得很靈活,移植性很強。從后面的介紹將看到,DataSource的設(shè)置和使用DataSource獲得連接兩種操作是分離的,因此不需要修改程序就可以改變客戶端對不同數(shù)據(jù)源(如數(shù)據(jù)庫)的訪問。DataSource隱藏了從連接池獲得連接的細節(jié),程序員不需要關(guān)心其內(nèi)部操作,甚至不用關(guān)心連接參數(shù)。第十九頁,共二十六頁,編輯于2023年,星期三三、如何在程序中使用連接池一般通過在環(huán)境(context)中進行查找來獲取一個DataSource。簡單的說,context是一種把名稱和資源相關(guān)聯(lián)的手段。程序員一般先創(chuàng)建一個DataSource對象(null),然后把這個實例和某一個環(huán)境綁定到一起。綁定(binding)是指將資源和名稱進行關(guān)聯(lián)的行為。例如文件內(nèi)容和文件名的綁定。這樣就可以在程序中通過相應(yīng)的名稱獲得一個DataSource的引用了。第二十頁,共二十六頁,編輯于2023年,星期三四、常見連接池使用舉例1、使用Tomcat6.0的連接池前提:已經(jīng)將數(shù)據(jù)庫提供的JDBC驅(qū)動程序拷貝到正確位置。(Tomcat的lib中和工程目錄的lib中)(1)設(shè)置context.xml文件,添加數(shù)據(jù)源的配置信息。見具體的文件設(shè)置。第二十一頁,共二十六頁,編輯于2023年,星期三四、常見連接池使用舉例maxIdle,連接池中連接的最大空閑數(shù)。數(shù)據(jù)庫連接有最大空閑時間,超過空閑時間,數(shù)據(jù)庫連接將被標記為不可用,然后被釋放。設(shè)置最大空閑數(shù)的目的是在沒有任何數(shù)據(jù)庫連接時也保持若干數(shù)量的空閑連接數(shù)。設(shè)為0表示無限制。默認為5,表示表示即使沒有數(shù)據(jù)庫連接時依然可以保持5空閑的連接,而不被清除,隨時處于待命狀態(tài)。第二十二頁,共二十六頁,編輯于2023年,星期三四、常見連接池使用舉例maxActive,連接池的最大數(shù)據(jù)庫激活連接數(shù)。設(shè)為0表示無限制。缺省為50,表示同時最多有20個數(shù)據(jù)庫連接。maxWait,最大建立連接等待時間。如果超過此時間將接到異常。設(shè)為-1表示無限制。缺省為5000,表示5秒后超時。第二十三頁,共二十六頁,編輯于2023年,星期三四、常見連接池使用舉例(2)在程序中使用設(shè)置好的DataSource。見WebMVCPrj工程。第二十四頁,共二十六頁,編輯于2023年,星期三四、常見連接池使用舉例2、使用開源連接池BoneCP(1)環(huán)境環(huán)境:jdk1.6,tomcat6.0.20,bonecp-0.6.4需要的包:google-collections-1.0.jar,slf4j-api-1.5.11.jar,slf4j-log4j12-1.5.11.jar,bonecp-0.6.4.ja

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論