簡體   English   中英

不使用數據庫連接池的原因?

[英]Reasons not to use database connection pooling?

我最近發現了一個自動創建的連接字符串,指定了“Pooling = False”,並想知道它為什么會這樣設置。 根據我的理解,只要不完全錯誤配置,匯集幾乎總是有利的。

是否有任何原因禁用池? 它取決於操作系統,物理連接還是使用的DBMS?

是的,有理由禁用池。 您需要檢查特定池庫如何處理臨時網絡斷開連接。 例如,如果連接丟失但連接對象仍處於活動狀態,則某些數據庫驅動程序和/或池庫不會執行任何操作。 池不會重新生成新連接,而是會為您提供過時的連接,您將收到錯誤。 某些池實現通過在提供與應用程序的連接之前向服務器發出一些快速命令來檢查連接是否處於活動狀態。 如果他們得到錯誤,他們會殺死該連接並產生一個新連接。 在啟用池之前,您始終需要針對此類場景測試池庫。

原因必須是您的上下文正在嘗試更改底層數據庫的狀態,例如,如果您正在做一些影響TLS(傳輸層安全性)的事情,則不應使用連接池,因為LDAP不會跟蹤任何此類狀態更改,如果你這樣做是在妥協你的安全問題。

如果它是單線程應用程序,則池化似乎是不必要的。 它是在資源有限的設備上嗎? 啟動時間對應用程序很重要嗎? 這些是可能導致決定關閉池的一些因素。

總的來說,我認為你認為合並是有益的。 如果它是一個典型的網絡應用程序,那么我會詢問它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM