5

我碰到下面的文本一邊唸叨數據庫連接池屬性:最大連接池大小

maximum pool size屬性指定池維護可用和借用(使用)連接的最大數目。如果最大連接數被借用,則在連接返回到池之前不會有連接可用。 該屬性允許池中的連接數量隨着需求增加而增加。與此同時,該屬性確保池不會長到exhausting a system's resources,點最終影響應用程序的性能和可用性。

我的問題是:當上面的文字談「exhausting system resources」是否意味着數據庫的性能下降?如果答案是肯定的,爲什麼數據庫沒有最大限度的連接限制而不會影響性能,而不是依靠應用程序來指定正確的最大連接限制?是否有任何數據庫,說多少併發連接可以支持(比如用於Oracle/SQL服務器?)

回答

6

一般來說,關於「排氣系統資源」的關注既適用於應用服務器和數據庫服務器。您允許,更多的併發會話的應用服務器(一個或多個)上運行更多的數據庫連接,在更大RAM的應用服務器(一個或多個)VM需要,更多的需求置於CPU的應用服務器和數據庫服務器等。如果的積壓工作隊列變得太大,你會發現自己花更多的時間和關閉CPU和調度的任務交換過程比在做無用功。在連接池的最大尺寸,您可以通過快速示數出來,而不是讓用戶的時間進行等待,這將永遠不會回覆稍微更加妥善地處理流量的雪崩或意想不到的性能瓶頸。

數據庫做的,一般來說,必須限制他們支持的連接數量的能力。甲骨文公司擁有PROCESSESSESSIONS參數,例如,支持多個連接架構(專用服務器和共享服務器),讓你權衡性能對資源的消耗,增加併發連接數據庫可以支持的數量。

+1

+1此外,還應考慮,你必須訪問同一數據庫的多個應用服務器(數據庫連接的最大數目至少應爲所有應用服務器相結合的最大池大小)的情況或情況下,你可能「限制「應用程序池大小,以便給予其他數據庫會話更多的優先權。 – 2011-04-28 09:18:34