我目前正在編寫一個多線程應用程序,它將需要訪問數據庫以便爲請求提供服務。我看到很多人說,使用許多持久數據庫連接池是這種類型的應用程序的方式,但我試圖圍繞爲什麼這是這種情況。爲什麼數據庫連接池比單個連接好?
請記住,我在Erlang中設計這個應用程序,所以我會很多地使用線程/進程/工作。
所以,讓我們比較兩種情況:
你必須擁有一個數據庫連接一個單獨的線程。所有客戶端處理線程都會與此線程通信以進行數據庫查詢。
您有一個線程池,每個線程都有自己的數據庫連接。當客戶端處理線程想要訪問數據庫時,它從池中獲取這些線程中的一個,並使用它來查詢數據庫。
在第一種情況下,我看到很多人說它是壞的,因爲有一個線程處理所有與數據庫相關的查詢會導致瓶頸。但是我的困惑是:這個單線程的瓶頸不是數據庫本身嗎?如果線程正在做的是通過其連接句柄查詢數據庫,是不是等待數據庫響應主要等待時間的請求?如何在這個問題上拋出更多的連接線程來解決它?
嗯是的,很好的答案,我沒有真正考慮在這種情況下數據庫的內部。 – Doug