1. 程式人生 > 其它 >mysql連線池有什麼用_我們為什麼要使用資料庫連線池?

mysql連線池有什麼用_我們為什麼要使用資料庫連線池?

應用程式和資料庫建立連線的過程是這樣的:首先通過TCP協議的三次握手和資料庫伺服器建立連線,然後傳送資料庫使用者賬號密碼,等待資料庫驗證使用者身份。

2. 完成使用者身份驗證後,系統才可以提交SQL語句到資料庫執行。

3. 好了這個時候假設我們不使用資料庫連線池,那麼完成一次SQL查詢後,我們還要把連線關閉,關閉連線就需要和資料庫通訊告訴它我們要斷開連線瞭然後再TCP四次揮手最後完成關閉。

這個過程中每一次發起SQL查詢所經歷的TCP建立連線,資料庫驗證使用者身份,資料庫使用者登出,TCP斷開連線消耗的等待時間都是可以避免的,這明顯是一種浪費。打個比方,你去網咖去玩遊戲,每次去到呢先插網線,然後開機登入遊戲,玩了一會兒要去上廁所,你就退出遊戲,然後關機拔網線。去完廁所回來就又重新插網線開機登遊戲。

有沒有覺得上面例子中的行為很扯蛋,所以每次SQL查詢都建立連結,查詢完後又關閉連線這個做法本身就很扯蛋。合理的做法就應該是系統啟動的時候就建立資料庫連線,然後需要使用SQL查詢的時候,就從系統拿出資料庫連線物件並提交查詢,查詢完了就把連線物件還給系統。系統在整個程式執行結束的時候再把資料庫連線關閉。考慮到一般資料庫應用都是Web多使用者併發應用,那麼只有一個數據庫連線物件肯定不夠用,所以系統啟動的時候就應該多建立幾個資料庫連線物件供多個執行緒使用,這一批資料庫連線物件集合在一起就被稱之為資料庫連線池。

資料庫連線池就是典型的用空間換時間的思想,系統啟動預先建立多個數據庫連線物件雖然會佔用一定的記憶體空間,但是可以省去後面每次SQL查詢時建立連線和關閉連線消耗的時間。