跳到主要內容

【資訊軟體知識】 關於資料庫的連接池

 軟體開發過程中常常會需要將資料儲存於「資料庫」之中,開發程式的過程中一定會頻繁操作資料庫進行資料的儲存與查詢,試想每次的動作如若都要先有連接及斷線的程序,對於資料庫與程式端來說都是一大負擔,因此連接池的機制就是為了減少不斷的連接、斷線的成本,除此之外,也讓連線可以重複使用,減少資源的浪費。

沒有連接池之前的單一連線機制有什麼問題?

首先來談談連接池之前的單一連接機制, 在配置正確的狀況下可能不會遇到任何問題, 但假設我們的應用同時間有100個用戶進行查詢, 那麼通道只有一條, 在怎麼樣都得等待前一個人查詢並回傳完畢才能再服務其他人的查詢請求, 一旦請求量越來越高將導致系統開始變慢, 可能會遇到的幾個缺點及風險如下:

● 每秒請求10個查詢可能還沒感覺到明顯延遲, 但假設每秒10000個以上的請求呢? 勢必降低查詢效率。
● 我們整個系統都依賴於單一連線, 那麼假設這個連線在例外的狀況下被關閉時, 那麼是不是就無法回應給Client端了?
● 連接到資料庫是一個成本昂貴的開銷, 因此常常連接關閉, 顯然不是一個有效率的策略。

為了改善上述缺點, 而發展出連接池的概念。

什麼是連接池?

連接池的機制下, 不僅能應付同時間大量請求的場景, 就連單一連線也能支援。

系統啟動時, 根據連線池數量配置, 創建N個連接並加入到連接池。

圖片來源

配置的數量過大亦會造成浪費, 這點需要取決於我們的應用量的估計。

每次跟DB請求前, 就會先從連接池中取得一條通道跟DB溝通。

圖片來源

當連接池的連線都被用滿的時候, 會等待其他人的連接被釋放。

圖片來源

結語

這樣的概念很聰明,相當於準備了一個緩衝站,而這個緩衝站的資源是共享的,因此對於後者的資料庫來說是一大福音,不會因為各個程式每一個動作就一次連接導致資料庫可以服務的資源耗盡。

其實現在的共享經濟(交通、住宿、場地...),就有點類似這樣的概念,透過購置有效的資產,開放平台提供給普羅大眾使用,而使用完畢後進行歸還,這樣一來能夠有效減少不必要的浪費,讓使用效率最大化。

留言

這個網誌中的熱門文章

java西元民國轉換_各種不同格式

C#資料庫操作(新增、修改、刪除、查詢)