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