我正在開發一個與數據庫通信的java桌面應用程序。有五個用戶和一個數據庫。每個用戶在其計算機上都有自己的軟件副本,並且數據庫位於同一LAN中的計算機上。爲桌面應用程序執行連接池是否有意義?
我讀過連接池只爲web應用程序完成。我擔心的是,是否會打開和關閉每一個會減慢軟件速度的查詢的新連接?一般情況下,特別是在桌面應用程序中,在這種情況下使用連接池是否有意義?如果打開/關閉連接實際上是瓶頸和連接池不可行,那麼正確的策略是什麼?
我正在開發一個與數據庫通信的java桌面應用程序。有五個用戶和一個數據庫。每個用戶在其計算機上都有自己的軟件副本,並且數據庫位於同一LAN中的計算機上。爲桌面應用程序執行連接池是否有意義?
我讀過連接池只爲web應用程序完成。我擔心的是,是否會打開和關閉每一個會減慢軟件速度的查詢的新連接?一般情況下,特別是在桌面應用程序中,在這種情況下使用連接池是否有意義?如果打開/關閉連接實際上是瓶頸和連接池不可行,那麼正確的策略是什麼?
連接池是一個「服務器端的東西」。如果將數據庫所在的連接集中在一起,例如在可能位於數據庫和客戶端之間的應用程序服務器上,那麼它確實是有意義的。
問:你有應用服務器還是任何一種中間件?或者你的客戶是否都直接連接到數據庫?
如果是後者,什麼種的數據庫?每個供應商都有自己的擴展可能會有所幫助。
然後顯然所有這些桌面數據庫工具都做錯了... –
答案是,這取決於。
這取決於應用程序的複雜性以及要對數據庫進行同步查詢的數量。
如果您所做的一切只是時時撥打一個電話,那麼可能不值得擁有一個存儲池,但保留一個可用的連接。
另一方面,如果您正在進行大量查詢,有時同時進行,那麼將事件設置爲簡單池會是有益的。
更復雜的問題變得你會從具有連接池
這得到更多的好處,當然是一個平衡的行爲。如果你有幫助,你不需要很長時間沒有任何關係。
謝謝。有沒有太多的查詢到數據庫。但我的觀點是,如果其中一個用戶想要......插入一條新紀錄,由於建立連接會有滯後嗎? – Pouya
進行連接,可能。這將取決於幾個因素。在這種情況下,使用單個連接或少量連接可能會更好。可以回收連接的池會更好,因此如果連接已打開一段時間,則可以自動關閉連接,並在需要時再次打開連接。因此,如果您在(相對)快速連續的情況下進行多項查詢,則可以保留該連接,例如... – MadProgrammer
*「我讀過連接池只爲web應用程序完成」* ...不知道你在哪裏閱讀,但停止閱讀那裏的東西。除此之外,沒有人可以爲你權威回答這個問題。它取決於許多因素和應用程序的使用模式。 –
我不同意這個問題的結論是「主要基於意見」。連接池總是優於長壽命或頻繁打開/關閉的連接。後者在數據庫服務器上創建負載,無論該應用程序是桌面應用程序還是服務器應用程序。前者(長期存在的)承擔連接丟失和恢復的風險,這需要實際的應用級邏輯來應對。連接池通過在返回連接之前檢查「新鮮度」,極大地簡化了應用程序邏輯並顯着減少了故障。 – brettw