基于JDBC的數(shù)據(jù)庫連接池技術研究與應用
近年來,隨著Internet/Intranet建網(wǎng)技術的飛速發(fā)展和在世界范圍內(nèi)的迅速普及,計算機 應用程序已從傳統(tǒng)的桌面應用轉(zhuǎn)到Web應用。
本文引用地址:http://butianyuan.cn/article/189898.htm基于B/S(Browser/Server)架構的3層開發(fā)模式逐漸取代C/S(Client/Server)架構的開發(fā)模式,成為開發(fā)企業(yè)級應用和電子商務普遍采用的技術。在Web應用開發(fā)的早期,主要使用的技術是CGI?ASP?PHP等。之后,Sun公司推出了基于Java語言的Servlet+Jsp+JavaBean技術。相比傳統(tǒng)的開發(fā)技術,它具有跨平臺?安全?有效?可移植等特性,這使其更便于使用和開發(fā)。
Java應用程序訪問數(shù)據(jù)庫的基本原理
在Java語言中,JDBC(Java DataBase CONnection)是應用程序與數(shù)據(jù)庫溝通的橋梁,
即Java語言通過JDBC技術訪問數(shù)據(jù)庫。JDBC是一種“開放”的方案,它為數(shù)據(jù)庫應用開發(fā)人員?數(shù)據(jù)庫前臺工具開發(fā)人員提供了一種標準的應用程序設計接口,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應用程序。JDBC提供兩種API,分別是面向開發(fā)人員的API和面向底層的JDBC驅(qū)動程序API,底層主要通過直接的JDBC驅(qū)動和JDBC-ODBC橋驅(qū)動實現(xiàn)與數(shù)據(jù)庫的連接。
一般來說,Java應用程序訪問數(shù)據(jù)庫的過程是:
①裝載數(shù)據(jù)庫驅(qū)動程序;
②通過JDBC建立數(shù)據(jù)庫連接;
③訪問數(shù)據(jù)庫,執(zhí)行SQL語句;
④斷開數(shù)據(jù)庫連接。
JDBC作為一種數(shù)據(jù)庫訪問技術,具有簡單易用的優(yōu)點。但使用這種模式進行Web應用
程序開發(fā),存在很多問題:首先,每一次Web請求都要建立一次數(shù)據(jù)庫連接。建立連接是一個費時的活動,每次都得花費0.05s~1s的時間,而且系統(tǒng)還要分配內(nèi)存資源。這個時間對于一次或幾次數(shù)據(jù)庫操作,或許感覺不出系統(tǒng)有多大的開銷??墒菍τ诂F(xiàn)在的Web應用,尤其是大型電子商務網(wǎng)站,同時有幾百人甚至幾千人在線是很正常的事。在這種情況下,頻繁的進行數(shù)據(jù)庫連接操作勢必占用很多的系統(tǒng)資源,網(wǎng)站的響應速度必定下降,嚴重的甚至會造成服務器的崩潰。不是危言聳聽,這就是制約某些電子商務網(wǎng)站發(fā)展的技術瓶頸問題。其次,對于每一次數(shù)據(jù)庫連接,使用完后都得斷開。否則,如果程序出現(xiàn)異常而未能關閉,將會導致數(shù)據(jù)庫系統(tǒng)中的內(nèi)存泄漏,最終將不得不重啟數(shù)據(jù)庫。還有,這種開發(fā)不能控制被創(chuàng)建的連接對象數(shù),系統(tǒng)資源會被毫無顧及的分配出去,如連接過多,也可能導致內(nèi)存泄漏,服務器崩潰。
數(shù)據(jù)庫連接池(connection pool)的工作原理
1、基本概念及原理
由上面的分析可以看出,問題的根源就在于對數(shù)據(jù)庫連接資源的低效管理。
我們知道,對于共享資源,有一個很著名的設計模式:資源池(Resource Pool)。該模式正是為了解決資源的頻繁分配?釋放所造成的問題。為解決上述問題,可以采用數(shù)據(jù)庫連接池技術。數(shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個“緩沖池”。預先在緩沖池中放入一定數(shù)量的連接,當需要建立數(shù)據(jù)庫連接時,只需從“緩沖池”中取出一個,使用完畢之后再放回去。我們可以通過設定連接池最大連接數(shù)來防止系統(tǒng)無盡的與數(shù)據(jù)庫連接。更為重要的是我們可以通過連接池的管理機制監(jiān)視數(shù)據(jù)庫的連接的數(shù)量?使用情況,為系統(tǒng)開發(fā)?測試及性能調(diào)整提供依據(jù)。
評論