資料庫連線池

2021-10-10 05:11:08 字數 1896 閱讀 7205

最快的資料庫連線池,是spring boot 2.x預設的資料庫連線池

連線驗證失敗.這對您的應用程式是不可見的.連線已退役並已更換.你會看到一條日誌訊息,說明無法驗證連線的效果….

連線空閒時間超過idletimeout.這對您的應用程式是不可見的.連線已退役並已更換.你會看到乙個關閉原因(連線已經通過idletimeout).

連線達到了maxlifetime.這對您的應用程式是不可見的.連線已退役並已更換.您會看到(連線已通過maxlifetime)的關閉原因,或者如果在達到maxlifetime時連線正在使用,您將在稍後看到(連線被驅逐或死亡).

使用者手動逐出連線.這對您的應用程式是不可見的.連線已退役並已更換.你會看到乙個關閉原因(由使用者驅逐的連線).

jdbc呼叫丟擲了不可恢復的sqlexception.這應該對您的應用程式可見.您會看到關閉原因(連線中斷).

阿里巴巴出品,最穩定的資料庫連線池

對於一些qps較高的服務要避免了不必要的動態擴容,建議把連線池的最小閒置連線數和最大連線數設定成一樣的,且開啟keepalive進行連線活性檢查,並且活性檢查的時間小於伺服器端的連線的最大空閒時間,這樣就不會在後期發生動態新建連線的情況

對於一些長期qps非常低的服務,如管理後台、定時任務這種,但是有的時候需要用管理後台做一些巨大的操作(比如併發大量資料匯入和修改)導致需要的連線暴增,且管理後台不會特別要求效能,就適合將最小閒置連線數的值設定的比最大連線數小,這樣不會造成不必要的連線浪費,也不會在需要暴增連線的時候無法動態擴充套件(比如簽到簽退這種洪峰固定的業務)

oracle建議和druid配合,並開啟ps快取,mysq|建議和hikaricp配合

一般sql的執行順序是:獲取連線–>提交sql(sql解析–>sql執行)—>獲取結果–>關閉連線。可以快取的一般為連線和sql解析的抽象語法樹,後者可由客戶端或資料庫端的

preparedstamentcache快取,mysq|的pscache是每個連線乙個快取, oracle是全域性的快取,在這方面mysq|的快取占用記憶體較大,且由於連線間的隔離性快取命中率不高,是否開啟pscache需要經過實驗後權衡決定。oracle在高併發情況下建議開啟,oracle配合druid使用效果更好,因為druid不會出現pscache記憶體占用過多的問題。

應該配置maxwait屬性為800ms至1200ms區間內,預設值太大,在高併發情況下可能出現大批量超時請求。

mysql開啟ps快取,記憶體占用極高,不建議匹配druid使用

租用的連線應該用完馬上歸還,不要持有並等待其他資源,如果配置不當在高併發環境下可能造成死鎖

盡量不要造成持有並等待,不可避免持有並等待的盡量不造成迴圈等待,不可避免時設定超時時間釋放所有資源

為了從網路異常、資料庫重啟等意外中快速恢復,資料庫驅動級別socket timeout必須要設定,建議值為最長sql執行時間的2到3倍

連線最大存活時間要設定的比資料庫端的最大存活時間稍短一些,否則在未開啟連線池保活功能的情況下,連線池內的連線可能會週期性的大批量失效。

連線池保活功能在資料庫驅動支援ping方式的情況下建議開啟,如果資料庫驅動不支援ping方式那麼只能用執行測試sql的方式保活,這在高併發情況下代價太大不建議開啟。

長短事務分別使用不同的連線池

連線池大小的設定要根據資料庫的配置,而不是業務的併發量

連線池大小

等待連線池時間

sql執行時間

2048

33ms

77ms

1024

38ms

30ms

961ms

2ms將9600個執行緒對oracle進行壓測,沒兩次訪問資料庫的操作之間sleep 550

對於完成-比業務需要獲取多個連線的情況,要設定連線池內最少連線數以防止死鎖

其中m=業務最大併發量

n=每筆業務需要的連線數

資料庫連線池 Redis連線池

基本原理 在內部物件池中,維護一定數量的資料庫連線,並對外暴露資料庫連線的獲取和返回方法。如外部使用者可通過getconnection方法獲取資料庫連線,使用完畢後再通過releaseconnection方法將連線返回,注意此時的連線並沒有關閉,而是由連線池管理器 並為下一次使用做好準備。2.作用 ...

資料庫連線池

實現資料連線池,讓系統有更高有執行效率 using system using system.data using system.data.sqlclient using system.collections using system.threading public class dataaccess...

資料庫連線池

資料庫連線池概述 資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。資料庫連線池負責分配 管理和釋放資料庫連線,它允許應用程式重複使用乙個現有...