更新時(shí)間:2022年03月04日14時(shí)40分 來源:傳智教育 瀏覽次數(shù):
在JDBC編程中,每次創(chuàng)建和斷開Connection對(duì)象都會(huì)消耗一定的時(shí)間和IO資源。這是因?yàn)樵贘ava程序與數(shù)據(jù)庫之間建立連接時(shí),數(shù)據(jù)庫端要驗(yàn)證用戶名和密碼,并且要為這個(gè)連接分配資源,Java程序則要把代表連接的java.sql.Connection對(duì)象等加載到內(nèi)存中,所以建立數(shù)據(jù)庫連接的開銷很大。尤其是在大量的并發(fā)訪問時(shí),假如某網(wǎng)站一天的訪問量是10萬,那么,該網(wǎng)站的服務(wù)器就需要?jiǎng)?chuàng)建、斷開連接10萬次,頻繁地創(chuàng)建、斷開數(shù)據(jù)庫連接勢(shì)必會(huì)影響數(shù)據(jù)庫的訪問效率,甚至導(dǎo)致數(shù)據(jù)庫崩潰。
為了避免頻繁地創(chuàng)建數(shù)據(jù)庫連接,工程師們提出了數(shù)據(jù)庫連接池技術(shù)。數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用現(xiàn)有的數(shù)據(jù)庫連接,而不是重新建立。接下來,通過一張圖來簡(jiǎn)單描述應(yīng)用程序如何通過連接池連接數(shù)據(jù)庫,如圖2-1所示。
從圖2-1中可以看出,數(shù)據(jù)庫連接池在初始化時(shí)將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,當(dāng)應(yīng)用程序訪問數(shù)據(jù)庫時(shí)并不是直接創(chuàng)建Connection,而是向連接池“申請(qǐng)”一個(gè)Connection。如果連接池中有空閑的Connection,則將其返回,否則創(chuàng)建新的Connection。使用完畢后,連接池會(huì)將該Connection回收,并交付其他的線程使用,以減少創(chuàng)建和斷開數(shù)據(jù)庫連接的次數(shù),提高數(shù)據(jù)庫的訪問效率。
圖2-1 采用數(shù)據(jù)庫連接池操作數(shù)據(jù)庫的示意圖
北京校區(qū)