2015-03-19 39 views

回答

0

我才意識到Postgres的連接字符串有一堆設置的連接例如:

用戶ID = ro OT;密碼= MYPASSWORD;主機=本地主機,端口= 5432;數據庫= MyDatabase的; Pooling = true; Min Pool Size = 0; Max Pool Size = 100; Connection Lifetime = 0;

所以在我的代碼中,我可以在命令完成執行後關閉連接。但在幕後,連接實際上仍然存在並存儲在連接池中以再次使用。

0

只要Postgres服務器沒有完全阻塞連接(即,這不是一個將創建大量永久連接的應用程序),我認爲這不是一個問題來維護連接。我還建議在每個查詢之前檢查連接並處理重新連接。許多圖書館提供了這樣做的方法。例如,使用MyBatisJava),您可以讓它每次發出一個測試查詢,這可以被指定。我使用輕量級SELECT 1

我想說的關鍵是要儘可能保持連接閒置在交易,因爲當發生這種情況時,它可能會對性能產生各種不同的影響(如減慢其他查詢,防止高週轉表被及時清除,等等)。這並不是說在交易中閒置在空閒的任何時間都會自動變壞,但應該在可能的情況下考慮並最小化。 (例如,如果你有一些計算方法,要幾分鐘才能運行,做那些(其中一個將取決於上下文)或者commitrollback之前,請務必。

如果你正在做一堆SELECT S,並沒有什麼,你需要commit,我建議做一個rollback以幫助保持空閒的交易狀態到最低限度。

相關問題