詳解降低數據庫連接數的方法
數據庫連接數是數據庫中非常重要的概念之一,是大家學習數據庫知識的一個必須要掌握的,本文就為大家講解降低數據庫連接數的方法總結。
我們來看一下傳統三層下的序列圖
我們透過現象看一下本質,圖中的依賴關系決定我們要有兩臺服務器【不考慮負載均衡的前提下】。這樣我們的問題就來了,什么問題那?接下來聽我慢慢道來。
我們知道數據庫的鏈接以及連接池的分配是按照客戶端以及應用程序來分配的。換句話說“對于數據庫服務器在分配連接的時候是根據客戶端以及客戶端的應用程序來分配的”,舉個例子我們有一臺服務器并且這臺服務器上運行了三個進程。這種情況下數據庫會分配三個Session,三個進程中的鏈接以及連接池是不能共享的。看出問題了吧。
問題就是:當我們隨著公司的業務增加而部署越來越多的應用服務的時候數據庫的鏈接資源就會越來越少。當連接資源到了一定程度的時候,數據庫的瓶頸就出來了,這時候眾多的請求在數據庫端排隊但是來自于客戶端的請求又不斷的壓到應用程序服務器上,這樣我們的客戶端和數據庫群毆應用程序服務器。
問題的解決方案探索
我們在探索解決方案的時候先來回顧一下問題的場景:以洪水形式的請求壓到應用程序服務器,接著應用程序將這種壓力轉發到數據庫上。在數據庫上由于連接資源耗盡請求被大量積壓。這種積壓會增加應用程序服務器的連接資源。應用程序連接資源到一定程度下導致發送到應用程序的請求在應用程序端排隊積壓。這種情形就像浪涌。
為什么會出現這樣的問題那?原來“當我們增加應用的同時數據庫的鏈接資源也在不斷的增加”。看來我們應該找到一種方法,這種方法使得在增加新的應用的時候連接資源不會增加。
那么我們是不是應該統一來管理數據庫鏈接資源那?
答案是肯定的。來看看我們的方案看看能不能解決這個問題。
部署圖
從圖中我們可以看到。我們把鏈接這種資源進行了統一管理,就好像在數據庫前擋了一層代理。你直接向DAC要數據就可以了。
這就是我要為大家介紹的關于降低數據庫連接數的全部內容,可能知識還不夠全面,以后有機會,我還會繼續為大家介紹更多的知識,希望大家都能夠從中有所收獲。
【編輯推薦】