我有一個asp.net mvc網站,它爲每個頁面運行多個查詢。我應該打開一個連接還是打開並關閉每個查詢中的連接?什麼是最佳的數據庫連接策略
回答
這其實並不重要。當您使用ADO.NET(其中包括Linq to SQL,NHibernate和任何其他ORM)時,該庫使用連接池。您可以「關閉」並「重新打開」邏輯連接十幾次,但同一個連接將始終保持打開狀態。所以不要過多關心連接是否打開或關閉。
相反,您應該嘗試限制每頁必須運行的查詢數,因爲每次往返都會產生大量開銷。如果您在每個頁面上顯示相同的數據,請緩存結果,並設置緩存依賴性或到期日期,如果它不經常更改。還可以嘗試通過使用適當的連接和/或急切的加載來重用查詢數據(如果您使用的是延遲加載的ORM)。
即使數據在每次頁面加載時都會完全不同,您將通過使用返回多個結果集的單個存儲過程獲得更好的性能,而不是單獨運行每個查詢。
底線:忘掉連接策略並開始擔心查詢策略。每頁超過3-5個查詢,您可能會遇到嚴重的規模問題。
如果您確信交易將很快完成,那麼請使用單個連接。
務必檢查所有返回結果並在可能的情況下將所有內容都包含在異常處理中。
爲避免不必要的開銷,最好使用單個連接。但一定要在「try」塊中運行查詢,並在「finally」塊中關閉連接,以確保不會掛起連接。
或使用'using'語句 – 2010-06-12 13:53:08
的UnitOfWork ??這是一個很好的策略。 nhibernate和許多其他人使用這種模式。
給它一個滿足您的要求具體細節一個谷歌..
吉姆
如果您在ADO.NET的常規頁面上運行多個查詢,那麼它們將按順序運行,並且連接池將意味着它無關緊要。最佳做法是按需打開連接並立即關閉連接 - 即使是在同一頁面中進行多個查詢。連接池使得這個效率很高。
當您使用多個查詢時,通過同時打開多個連接並使用異步ADO來確保所有請求在多個線程中同時運行,可以顯着提高性能。在這種情況下,您需要每個查詢的連接。但整體連接時間會縮短。
在單一連接上也可能使用MARS,但我並不是那種支持者,並且在功能上受到很多限制。
- 1. 保留大數據集的最佳策略是什麼?
- 2. 在c#中連接數據庫的最佳方式是什麼?
- 3. 連接到SQL數據庫的最佳實踐是什麼?
- 4. 在php中連接數據庫的最佳方法是什麼?
- 5. 連接android和oracle數據庫的最佳方式是什麼?
- 6. 分組鏈接用戶的最佳策略是什麼
- 7. 從我的客戶端連接到我的數據庫的最佳策略
- 8. H2數據庫 - 併發連接策略
- 9. 什麼是Android的最佳數據庫?
- 10. 在限制性IT策略下安裝cygwin的最佳策略是什麼?
- 11. 數據庫連接池庫的最佳選擇是什麼? (c3p0問題)
- 12. 擺脫「警告C4267可能的數據丟失」的最佳策略是什麼?
- 13. 連接暫停後,GoogleApiClient重新連接策略是什麼?
- 14. 每次迭代保存模擬數據的最佳策略是什麼?
- 15. 什麼是支持.NET 3.0和.NET 4.0的最佳策略?
- 16. 用PHP更新mysql行的最佳策略是什麼?
- 17. Python/MySQL組合的最佳轉義字符策略是什麼?
- 18. 構建XACML策略的最佳實踐是什麼?
- 19. 什麼是依賴注入用戶輸入的最佳策略?
- 20. 使用nvidia-smi什麼是捕獲能量的最佳策略
- 21. 使用XACML3.0創建策略的最佳方式是什麼?
- 22. 調試SSRS的最佳策略是什麼?
- 23. 測試D3/HighCharts/SVG的最佳策略是什麼?
- 24. 什麼是在Visual C#中遵循的最佳調試策略?
- 25. 什麼是使ORM緩存無效的最佳策略?
- 26. 什麼是Spring安全會話認證的最佳策略
- 27. 同時取消多個頁面的最佳策略是什麼?
- 28. vim中代碼塊和宏的最佳策略是什麼?
- 29. 什麼是GAE的最佳遷移策略CloudSQL
- 30. 日誌分析應用程序的最佳策略是什麼
@should我只是存儲一個緩存的連接對象 – leora 2010-06-12 14:07:33