一個工作5年的粉絲找到我,他說參加美團面試,遇到一個基礎題沒回答上來。
這個問題是:“資料庫連線池有什麼用?以及它有哪些關鍵引數”?
我說,這個問題都不知道,那你專案裡面的連線池配置怎麼設定的? 你們猜他怎麼回答。懂得懂得啊。
好的,關於這個問題,我們來看看普通人和高手的回答。
普通人:
資料庫連線池的作用就是去複用這個連線,那麼就可以去減少應用跟資料庫之間連線的一個建立的一個開銷。
從而去提升整個這個應用跟資料庫訪問的一個效能。
高手:
關於這個問題,我從這幾個方面來回答。
首先,資料庫連線池是一種池化技術,池化技術的核心思想是實現資源的複用,避免資源重複建立銷燬的開銷。
而在資料庫的應用場景裡面,應用程式每次向資料庫發起CRUD操作的時候,都需要建立連線
在資料庫訪問量較大的情況下,頻繁的建立連線會帶來較大的效能開銷。
而連線池的核心思想,就是應用程式在啟動的時候提前初始化一部分連線儲存到連線池裡面,當應用需要使用連線的時候,直接從連線池獲取一個已經建立好的連結。
連線池的設計,避免了每次連線的建立和釋放帶來的開銷。
連線池的引數有很多,不過關鍵引數就幾個:
首先是,連線池初始化的時候會有幾個關鍵引數:
- 初始化連線數,表示啟動的時候初始多少個連線儲存到連線池裡面。
- 最大連線數,表示同時最多能支援多少連線,如果連線數不夠,後續要獲取連線的執行緒會阻塞。
- 最大空閒連線數,表示沒有請求的時候,連線池中要保留的最大空閒連線。
- 最小空閒連線,當連線數小於這個值的時候,連線池需要再建立連線來補充到這個值。
然後,就是在使用連線的時候的關鍵引數:
- 最大等待時間,就是連線池裡面的連線用完了以後,新的請求要等待的時間,超過這個時間就會提示超時異常。
- 無效連線清除, 清理連線池裡面的無效連線,避免使用這個連線操作的時候出現錯誤。
不同的連線池框架,除了核心的引數以外,還有很多業務型的引數,比如是否要檢測連線sql的有效性、連線初始化SQL等等,這些配置引數可以在使用的時候去查詢api文件就可以知道。
以上就是我對這個問題的理解。
總結
這個問題更進一步去問,就會問到 最大連線數、最小連線數應該如何設定?
連線池的實現原理啊等等。
所以建議各位粉絲還是要有一個系統化的學習。
如果有任何面試問題、職業發展問題、學習問題,都可以私信我。
版權宣告:本部落格所有文章除特別宣告外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自Mic帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力。歡迎關注同名微信公眾號獲取更多技術乾貨!