我在辯論如果我應該始終打開我的postgres連接,並在運行查詢之前檢查/重新連接。或者我應該在運行每個查詢之前連接它,並在完成後立即關閉連接。謝謝!Postgres連接應該始終打開?或者在運行每個查詢之前連接?
0
A
回答
0
我才意識到Postgres的連接字符串有一堆設置的連接例如:
用戶ID = ro OT;密碼= MYPASSWORD;主機=本地主機,端口= 5432;數據庫= MyDatabase的; Pooling = true; Min Pool Size = 0; Max Pool Size = 100; Connection Lifetime = 0;
所以在我的代碼中,我可以在命令完成執行後關閉連接。但在幕後,連接實際上仍然存在並存儲在連接池中以再次使用。
0
只要Postgres服務器沒有完全阻塞連接(即,這不是一個將創建大量永久連接的應用程序),我認爲這不是一個問題來維護連接。我還建議在每個查詢之前檢查連接並處理重新連接。許多圖書館提供了這樣做的方法。例如,使用MyBatis(Java),您可以讓它每次發出一個測試查詢,這可以被指定。我使用輕量級SELECT 1
。
我想說的關鍵是要儘可能保持連接閒置在交易,因爲當發生這種情況時,它可能會對性能產生各種不同的影響(如減慢其他查詢,防止高週轉表被及時清除,等等)。這並不是說在交易中閒置在空閒的任何時間都會自動變壞,但應該在可能的情況下考慮並最小化。 (例如,如果你有一些計算方法,要幾分鐘才能運行,做那些(其中一個將取決於上下文)或者commit
或rollback
之前,請務必。
如果你正在做一堆SELECT
S,並沒有什麼,你需要commit
,我建議做一個rollback
以幫助保持空閒的交易狀態到最低限度。
相關問題
- 1. 在每個單一的非查詢或整個連接之前打開連接?
- 2. SQL - 我應該在每次查詢後終止連接嗎?
- 3. 每次打開數據庫連接時運行查詢Zend FM
- 4. 如果我使用連接池運行兩個單獨的查詢,是否應該釋放我的連接並在第二個查詢之前再次連接?
- 5. 終止連接-Postgres
- 6. mysql連接。我應該保留它還是在每次交易之前開始新的連接?
- 7. Postgres的連接查詢
- 8. 斷開連接之前的NodeJS連接
- 9. C#應該在連接池中保持打開連接
- 10. 我應該保持excel工作簿連接在C#中打開,或者每次需要添加新行時打開一個新連接?
- 11. 我應該每次打開一個MySQL連接還是總是打開一個MySQL連接?
- 12. 在腳本運行之前終止與瀏覽器的連接
- 13. 當運行斌/ delayed_job的開始,Postgres的無連接
- 14. 連接池應該比保持連接打開慢得多嗎?
- 15. 打開和關閉每個查詢的數據庫連接
- 16. 在運行下一個SQL腳本之前檢查DB2連接
- 17. Postgres的運行並行查詢(大表上的交叉連接)
- 18. IPC:爲每個請求連接或保持套接字打開?
- 19. 查詢該表的每一行其連接到另一個
- 20. 如何在打開連接之前檢查我的SqlConnection狀態?
- 21. Postgres觸發器打開http連接
- 22. BeginTransaction需要打開連接。連接的當前狀態爲打開,執行
- 23. 在連接之前檢測Redis連接
- 24. 在生成的進程中運行查詢時Postgres斷開連接?
- 25. 每個ToListAsync打開DbContext最終會阻塞連接池嗎?
- 26. 在init.d腳本運行之前Wifi斷開連接
- 27. 連接打開
- 28. RethinkDB和Node.js/Express - 爲並行查詢打開多個連接?
- 29. Postgres多個連接
- 30. 基本連接數據庫,運行查詢,關閉連接?