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

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