【Java面試】資料庫連接池有什麼用?它有哪些關鍵參數?

  • 2022 年 6 月 15 日
  • 筆記

一個工作5年的粉絲找到我,他說參加美團面試,遇到一個基礎題沒回答上來。

這個問題是:「資料庫連接池有什麼用?以及它有哪些關鍵參數」?

我說,這個問題都不知道,那你項目裡面的連接池配置怎麼設置的? 你們猜他怎麼回答。懂得懂得啊。

好的,關於這個問題,我們來看看普通人和高手的回答。

普通人:

資料庫連接池的作用就是去復用這個連接,那麼就可以去減少應用跟資料庫之間連接的一個建立的一個開銷。

從而去提升整個這個應用跟資料庫訪問的一個性能。

高手:

關於這個問題,我從這幾個方面來回答。

首先,資料庫連接池是一種池化技術,池化技術的核心思想是實現資源的復用,避免資源重複創建銷毀的開銷。

而在資料庫的應用場景裡面,應用程式每次向資料庫發起CRUD操作的時候,都需要創建連接

在資料庫訪問量較大的情況下,頻繁的創建連接會帶來較大的性能開銷。

而連接池的核心思想,就是應用程式在啟動的時候提前初始化一部分連接保存到連接池裡面,當應用需要使用連接的時候,直接從連接池獲取一個已經建立好的鏈接。

連接池的設計,避免了每次連接的建立和釋放帶來的開銷。

image-20220422140800456

連接池的參數有很多,不過關鍵參數就幾個:

首先是,連接池初始化的時候會有幾個關鍵參數:

  1. 初始化連接數,表示啟動的時候初始多少個連接保存到連接池裡面。
  2. 最大連接數,表示同時最多能支援多少連接,如果連接數不夠,後續要獲取連接的執行緒會阻塞。
  3. 最大空閑連接數,表示沒有請求的時候,連接池中要保留的最大空閑連接。
  4. 最小空閑連接,當連接數小於這個值的時候,連接池需要再創建連接來補充到這個值。

然後,就是在使用連接的時候的關鍵參數:

  1. 最大等待時間,就是連接池裡面的連接用完了以後,新的請求要等待的時間,超過這個時間就會提示超時異常。
  2. 無效連接清除, 清理連接池裡面的無效連接,避免使用這個連接操作的時候出現錯誤。

不同的連接池框架,除了核心的參數以外,還有很多業務型的參數,比如是否要檢測連接sql的有效性、連接初始化SQL等等,這些配置參數可以在使用的時候去查詢api文檔就可以知道。

以上就是我對這個問題的理解。

總結

這個問題更進一步去問,就會問到 最大連接數、最小連接數應該如何設置?

連接池的實現原理啊等等。

所以建議各位粉絲還是要有一個系統化的學習。

如果有任何面試問題、職業發展問題、學習問題,都可以私信我。

file

版權聲明:本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Mic帶你學架構
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力。歡迎關注「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!