1. 程式人生 > >撩課-JavaWeb之什麼是連線池與連線池使用

撩課-JavaWeb之什麼是連線池與連線池使用

什麼是連線池

沒有連線池的情況

每次CRUD操作都要使用資料庫的時候,都要建立一個數據庫連線物件

普通的JDBC資料庫連線使用 DriverManager 來獲取

每次向資料庫建立連線的時候都要將 Connection 載入到記憶體中

然後再驗證使用者名稱和密碼花費時間0.05s~1s左右

每次CRUD操作就向資料庫要要一個連線,執行完成後再斷開連線。
這樣的方式將會消耗大量的資源和時間。

	資料庫的連線資源並沒有得到很好的重複利用
	若同時有幾百人甚至幾千人線上,
	頻繁的進行資料庫連線操作將佔用很多的系統資源,
    嚴重的甚至會造成伺服器的崩潰。
	
資料庫連線池

儲存物件的容器

連線池

儲存資料庫連線物件的容器

作用

初始化時建立一定數量的物件。需要時直接從池中取出一個空閒物件,
用完後並不直接釋放掉物件,而是再放到物件池中以方便下一次物件請求可以直接複用。
池技術的優勢是,可以消除物件建立所帶來的延遲,從而提高系統的效能。
資料庫連線池
資料庫連線池的基本思想就是為資料庫連線建立一個“緩衝池”。
預先在緩衝池中放入一定數量的連線,當需要建立資料庫連線時,
只需從“緩衝池”中取出一個,使用完畢之後再放回去。
我們可以通過設定連線池最大連線數來防止系統無盡的與資料庫連線
可以通過連線池的管理機制監視資料庫的連線的數量﹑使用情況,為系統開發﹑測試及效能調整提供依據。
示意圖

連線物件是以連結串列形式存放,已釋放的連線,放到最後。
從最前面獲取連線物件
連線池中的屬性
合理的設定連線池的屬性,會提高連線池的效能

1.連線資料庫時需要的4個要素

驅動名稱,資料庫地址,使用者名稱,密碼
2.初始化連線數

初始化時,連線池當中建立多少個Connection物件
3.最大連線數

連線池當中最多儲存多少個Connection物件
4.最小連線數

連線池當中最少得存多個少Connection物件
5.最大的空閒時間

如果一個獲取了連線物件,在指定時間內沒有任何動作,就會自動釋放連結
6.最大等待時間

在指定時間內,嘗試獲取連線,如果超出了指定時間,就會提示獲取失敗

連線池使用

連線池是使用javax.sql.DataSource介面來表示連線池
DataSource和jdbc一樣,也是隻提供一個介面,由第三方組織來提供
常見連線池
DBCP
	Spring推薦,Tomcat的資料來源使用的就是DBCP
C3P0
	C3P0是一個開放原始碼的JDBC連線池,它在lib目錄中與Hibernate一起釋出
    從2007年就沒有更新了,效能比較差。
Druid
    阿里巴巴提供的連線池-德魯伊-號稱最好的連線池,它裡面除了這些, 還有更多的功能。
DataSource資料來源和連線池Connection Pool是同一個東西,只是叫法不一樣而已
使用連線池與不使用連線池區別
 1.獲取方式不同
	 傳統:Connection conn = DriverManager.getConnection(url.userName,pwd);
	 連線池:Conneciton conn = DataSource物件.getConnection();
 2.釋放資源不同
	 傳統:和資料庫斷開conn.close();
	 連線池:把資料庫連線物件還給連線池,還可以給下一個人來使用
連線池操作
 主要是學習如何建立DataSource物件,再從DataSource物件中獲取Connection物件
 這些都是第三方提供者給我們提供好的。直接使用就行。
 獲取連線物件之後,其餘的操作和以前是一樣的。
 不同的資料庫連線池,就是在建立DataSource上不一樣。