2014-01-06 24 views
-1

我正在開發一個與數據庫通信的java桌面應用程序。有五個用戶和一個數據庫。每個用戶在其計算機上都有自己的軟件副本,並且數據庫位於同一LAN中的計算機上。爲桌面應用程序執行連接池是否有意義?

我讀過連接池只爲web應用程序完成。我擔心的是,是否會打開和關閉每一個會減慢軟件速度的查詢的新連接?一般情況下,特別是在桌面應用程序中,在這種情況下使用連接池是否有意義?如果打開/關閉連接實際上是瓶頸和連接池不可行,那麼正確的策略是什麼?

+0

*「我讀過連接池只爲web應用程序完成」* ...不知道你在哪裏閱讀,但停止閱讀那裏的東西。除此之外,沒有人可以爲你權威回答這個問題。它取決於許多因素和應用程序的使用模式。 –

+0

我不同意這個問題的結論是「主要基於意見」。連接池總是優於長壽命或頻繁打開/關閉的連接。後者在數據庫服務器上創建負載,無論該應用程序是桌面應用程序還是服務器應用程序。前者(長期存在的)承擔連接丟失和恢復的風險,這需要實際的應用級邏輯來應對。連接池通過在返回連接之前檢查「新鮮度」,極大地簡化了應用程序邏輯並顯着減少了故障。 – brettw

回答

3

連接池可以通過多種方式提供幫助。當然,在web應用程序中,通過保持連接打開以減少重新連接每個請求的時間/開銷,可以幫助減少負載。您可以在桌面應用程序中獲得的某些,但我懷疑您會注意到它們之間的差異。然而,最大的缺點之一是自動重新連接處理。根據應用程序的設置,如果您的連接應該免費下載,您可以獲得透明(或至少半透明)的重新連接支持。

+0

好回覆!知道1)客戶端是否直接連接到數據庫,以及2)確切地說是什麼類型的數據庫仍然是有用的。 – FoggyDay

+0

@FoggyDay客戶端直接連接到MySql或MS-Sql Server的數據庫。 – Pouya

0

連接池是一個「服務器端的東西」。如果將數據庫所在的連接集中在一起,例如在可能位於數據庫和客戶端之間的應用程序服務器上,那麼它確實是有意義的。

問:你有應用服務器還是任何一種中間件?或者你的客戶是否都直接連接到數據庫?

如果是後者,什麼的數據庫?每個供應商都有自己的擴展可能會有所幫助。

+1

然後顯然所有這些桌面數據庫工具都做錯了... –

1

答案是,這取決於。

這取決於應用程序的複雜性以及要對數據庫進行同步查詢的數量。

如果您所做的一切只是時時撥打一個電話,那麼可能不值得擁有一個存儲池,但保留一個可用的連接。

另一方面,如果您正在進行大量查詢,有時同時進行,那麼將事件設置爲簡單池會是有益的。

更復雜的問題變得你會從具有連接池

這得到更多的好處,當然是一個平衡的行爲。如果你有幫助,你不需要很長時間沒有任何關係。

+0

謝謝。有沒有太多的查詢到數據庫。但我的觀點是,如果其中一個用戶想要......插入一條新紀錄,由於建立連接會有滯後嗎? – Pouya

+0

進行連接,可能。這將取決於幾個因素。在這種情況下,使用單個連接或少量連接可能會更好。可以回收連接的池會更好,因此如果連接已打開一段時間,則可以自動關閉連接,並在需要時再次打開連接。因此,如果您在(相對)快速連續的情況下進行多項查詢,則可以保留該連接,例如... – MadProgrammer

相關問題