更新時間:2022年03月04日14時40分 來源:傳智教育 瀏覽次數(shù):
在JDBC編程中,每次創(chuàng)建和斷開Connection對象都會消耗一定的時間和IO資源。這是因為在Java程序與數(shù)據(jù)庫之間建立連接時,數(shù)據(jù)庫端要驗證用戶名和密碼,并且要為這個連接分配資源,Java程序則要把代表連接的java.sql.Connection對象等加載到內(nèi)存中,所以建立數(shù)據(jù)庫連接的開銷很大。尤其是在大量的并發(fā)訪問時,假如某網(wǎng)站一天的訪問量是10萬,那么,該網(wǎng)站的服務(wù)器就需要創(chuàng)建、斷開連接10萬次,頻繁地創(chuàng)建、斷開數(shù)據(jù)庫連接勢必會影響數(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ù)庫連接,而不是重新建立。接下來,通過一張圖來簡單描述應(yīng)用程序如何通過連接池連接數(shù)據(jù)庫,如圖2-1所示。
從圖2-1中可以看出,數(shù)據(jù)庫連接池在初始化時將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,當(dāng)應(yīng)用程序訪問數(shù)據(jù)庫時并不是直接創(chuàng)建Connection,而是向連接池“申請”一個Connection。如果連接池中有空閑的Connection,則將其返回,否則創(chuàng)建新的Connection。使用完畢后,連接池會將該Connection回收,并交付其他的線程使用,以減少創(chuàng)建和斷開數(shù)據(jù)庫連接的次數(shù),提高數(shù)據(jù)庫的訪問效率。
圖2-1 采用數(shù)據(jù)庫連接池操作數(shù)據(jù)庫的示意圖