1. 程式人生 > >在進行資料庫程式設計時,連線池有什麼作用?

在進行資料庫程式設計時,連線池有什麼作用?

答:由於建立連線和釋放連線都有很大的開銷(尤其是資料庫伺服器不在本地時,每次建立連線都需要進行 TCP 的三次握手,再加上網路延遲,造成的開銷是不可忽視的),為了提升系統訪問資料庫的效能,可以事先建立若 干連接置於連線池中,需要時直接從連線池獲取,使用結束時歸還連線池而不必關閉連線,從而避免頻繁建立和 釋放連線所造成的開銷,這是典型的用空間換取時間的策略(浪費了空間儲存連線,但節省了建立和釋放連線的 時間)。池化技術在 Java 開發中是很常見的,在使用執行緒時建立執行緒池的道理與此相同。基於 Java 的開源資料庫連線池主要有: C3P0、Proxool、DBCP、BoneCP、Druid等。

【補充】在計算機系統中時間和空間是不可調和的矛盾,理解這一點對設計滿足效能要求的演算法是至關重要的。大型網站效能優化的一個關鍵就是使用快取,而快取跟上面講的連線池道理非常類似,也是使用空間換時間的策略。可以將熱點資料置於快取中,當用戶查詢這些資料時可以直接從快取中得到,這無論如何也快過去資料庫中查詢。當然,快取的置換策略等也會對系統性能產生重要影響,對於這個問題的討論已經超出了這裡要闡述
的範圍。