這個c3p0連接池起到一個什么作用?為什么后端框架里要用連接池而不是直接去鏈接數據庫呢,?而連接池中的私有屬性誰能幫忙具體解釋一下。。。謝謝啦。。。
2 回答
已采納

yanrun
TA貢獻317條經驗 獲得超240個贊
這種連接“匯集”起來的技術基于這樣的一個事實:對于大多數應用程序,當它們正在處理通常需要數毫秒完成的事務時,僅需要能夠訪問JDBC連接的?1?個線程。當不處理事務時,這個連接就會閑置。相反,連接池允許閑置的連接被其它需要的線程使用。 事實上,當一個線程需要用?JDBC?對一個?GBase?或其它數據庫操作時,它從池中請求一個連接。當這個線程使用完了這個連接,將它返回到連接池中,這樣這就可以被其它想使用它的線程使用。 當連接從池中“借出”,它被請求它的線程專有地使用。從編程的角度來看,這和用戶的線程每當需要一個?JDBC?連接的時候調用DriverManager.getConnection()?是一樣的,采用連接池技術,可通過使用新的或已有的連接結束線程。 連接池可以極大的改善用戶的?Java?應用程序的性能,同時減少全部資源的使用。連接池主要的優點有: 減少連接創建時間 雖然與其它數據庫相比?GBase?提供了較為快速連接功能,但是創建新的?JDBC?連接仍會招致網絡和?JDBC?驅動的開銷。如果這類連接是“循環”使用的,使用該方式這些花銷就可避免。 簡化的編程模式 當使用連接池時,每一個單獨的線程能夠像創建了一個自己的?JDBC?連接一樣操作,允許用戶直接使用JDBC編程技術。 受控的資源使用 如果用戶不使用連接池,而是每當線程需要時創建一個新的連接,那么用戶的應用程序的資源使用會產生非常大的浪費并且可能會導致高負載下的異常發生。 注意,每個連到?GBase?的連接在客戶端和服務器端都有花銷(內存,CPU,上下文切換等等)。每個連接均會對應用程序和?GBase?服務器的可用資源帶來一定的限制。不管這些連接是否在做有用的工作,仍將使用這些資源中的相當一部分。 連接池能夠使性能最大化,同時還能將資源利用控制在一定的水平之下,如果超過該水平,應用程序將崩潰而不僅僅是變慢。
來自百度百科
添加回答
舉報
0/150
提交
取消