比c3p0還快200倍的數據庫連接池你知道嗎?

數據庫連接池是什麼:
連接池是一種常用的技術,爲什麼需要連接池呢?這個需要從TCP說起。假如我們的服務器跟數據庫沒有部署在同一臺機器,那麼,服務器每次查詢數據庫都要先建立連接,一般都是TCP鏈接,建立連接就需要3次握手了,假設後臺服務跟數據庫的單程的訪問時間需要10ms,那麼光是建立連接就花了30ms,並且TCP還有慢啓動的機制,實際上一次查詢可能還不止1次TCP來回,查詢效率就會大大降低。

爲什麼需要連接池:
爲了解決上述問題,我們就需要維護一些長鏈接,這樣就不用每次都去建立連接,畢竟建立連接除了佔用時間,還需要一些其他的系統資源。另外的好處,連接池讓我們更加容易地管理,一方面是可以避免數據庫資源都被某幾個API佔據,另一方面也可以避免資源泄露。

什麼是HikariCP
HikariCP是由在日本生活的美國人程序員開源的一個數據庫連接池組件,代碼非常輕量,並且速度非常的快。根據官方提供的數據,在i7,開啓32個線程32個連接的情況下,進行隨機數據庫讀寫操作,HikariCP的速度是現在常用的C3P0數據庫連接池的數百倍。在SpringBoot2.0中,官方也是推薦使用HikariCP。

比c3p0還快200倍的數據庫連接池你知道嗎?
爲什麼HikariCP會那麼快
1.字節碼更加精簡,所以可以加載更多代碼到緩存。

2.實現了一個無鎖的集合類型,來減少併發造成的資源競爭。

3.使用了自定義的數組類型,相對於ArrayList極大地提升了性能。

4.針對CPU的時間片算法進行優化,儘可能在一個時間片裏面完成各種操作。

與Druid對比
在github上有網友貼出了阿里巴巴Druid與hikari的對比,認爲hikari在性能上是完全秒殺阿里巴巴的Druid連接池的。對此,阿里的工程師也做了一定的迴應,說Druid的性能稍微差點是鎖機制的不同,並且Druid提供了更豐富的功能,兩者的側重點不一樣。
比c3p0還快200倍的數據庫連接池你知道嗎?

如何選擇:
選擇哪一款就看你自己的個人喜好了,不過呢兩款都是開源產品,阿里的Druid有中文的開源社區,交流起來當然也更加方便,並且經過阿里多個系統的實驗,想必也是非常的穩定,而Hikari是SpringBoot2.0默認的連接池,全世界使用範圍也非常廣,對於大部分業務來說,使用哪一款都是差不多的,畢竟性能瓶頸一般都不在連接池。大家可根據自己的喜好自由選擇。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章