[英]How to speed up concurrent identical queries SQL server 2008 R2
我繼承了一個基於.NET和SQL Server 2008 R2的支持解決方案。
該體系結構使得所有客戶端必須彼此保持同步,並且這由一個Winsock集線器處理,每個客戶端向該Winsock集線器發送和接收所做更改的通知。 這些通知采用更新類型和關鍵字段的形式。
接收到通知后,客戶端窗口將檢查更新的類型,如果他們認為自己有興趣,則發出數據庫命令(存儲過程)以檢索該鍵值的最新數據。 通常調用的存儲過程鏈接許多表以返回一個相當大的對象。
我的問題是,當許多客戶端處於活動狀態時,它們會在“相同”時間調用相同的存儲過程,並將性能降低(例如,小於1秒的查詢),而單獨調用時可能會花費大約20秒鍾,因為它可能等待其他客戶端完成。
SQL Server中是否有什么可以幫助我解決的問題? 我在考慮結果的緩存或可以停止一個查詢阻止另一個查詢的方式?
我很欣賞我可能應該在客戶端代碼和通知過程中進行一些更改以傳遞完全填充的對象,從而消除了多次查詢數據庫的需要。 但是,這是一個壽命有限的舊版應用程序,以如此重要的方式進行升級將是一件令人頭疼的事情。 如果我可以使用SQL Server中一個簡單的開關,那將為我節省我所需的時間!
謝謝,安德魯
注意事項:
鎖定類型可以是:
如果沒有任何效果,您可以嘗試分析查詢計划,但您表示在隔離環境中查詢此過程時性能不錯。
另一個性能問題是,如果未對tempdb數據庫進行優化,則臨時表可能會使其過載。 運行事件探查器以分析正在發生的事情。 僅過濾您需要評估結果的存儲過程。
如果有其他想法,我將添加更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.