思考問題:
1、如果資料庫建立連線例項是單例的,那當高併發的場景下會發生什麼現象?
通過測試可以得出每建立乙個連線例項需要4ms,執行乙個sql需要1ms,如果建立連線的例項是單例模式的,那我們可以計算出,1s可以接收tps是1000個,而且因為需要排隊,所以順序排後的需要的時間越長,如果我們使用資料庫連線池的話,我們min建立10個,max建立20個,那就意味著我們可以每ms同時處理tps是10-20個,那1s就可以處理1萬到10萬個tps,明顯高併發模式下效能有明顯提公升,而且在時間的業務場景下,一台伺服器所有能承受的tps一般在1000左右,如果怎麼看的話,最後乙個使用者獲得資料只需要50ms,比單例模式的1000ms返回明顯效能大幅提公升,但是我在看公司的**的時候發現都是使用的單例模式,這個需要再研究下原因
2、mysql、hbase、redis、es是否都有必要採用資料庫連線池?
(1)mysql例項連線應該支援多執行緒,根據研究的資料可知,mysql需要建立資料庫連線池,目的有兩個,乙個是高併發下的tp99會好一些,另外就是事物的原子性,要不都成功,要不都失敗,沒有中間狀態,乙個事物乙個連線,這樣可以進行回滾
(2)redis例項連線是單執行緒的,但是讀寫速度高,讀可以達到110000次/s,寫可以達到80000次/s
(3)hbase建立的資料庫連線應該是單執行緒的,但是在我看到的專案中,是採用單例模式來建立資料庫連線的,我感覺這側面的體現了也是單執行緒的,如果是多執行緒,不對執行緒進行控制,在高併發環境下很容易造成記憶體溢位的情況
hbase和mysql查詢效能對比
hbase效能調優
(4)es
資料庫連線池
實現資料連線池,讓系統有更高有執行效率 using system using system.data using system.data.sqlclient using system.collections using system.threading public class dataaccess...
資料庫連線池
資料庫連線池概述 資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。資料庫連線池負責分配 管理和釋放資料庫連線,它允許應用程式重複使用乙個現有...
資料庫連線池
資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。資料庫連線池負責分配 管理和釋放資料庫連線,它允許應用程式重複使用乙個現有的資料庫連線,而再...