在 MS SQL Server 上發送和檢索重複數據的單個查詢?
發生了非常奇怪的事情。似乎我們系統中針對特定數據庫的所有查詢都週期性地“執行緩慢” **。**即“正常速度”5 分鐘,然後慢5 分鐘(大致)。
在進一步調查(在消除“明顯”的幾天后)看來,有時客戶端(Sql Server Management Studio)多次發送查詢並多次接收。
即“從客戶端發送的字節”將加倍甚至三倍,而“從伺服器接收的字節”也會這樣做。顯然,“客戶端處理時間”和“總執行時間”的增加模式相似。
這甚至發生
SELECT * FROM table
在表上有 3 行數據的情況下!當一個查詢變慢時,它們都會變慢。不管查詢/結果集多麼簡單,或者正在訪問哪個“客戶端”(在基於 ADO.NET 的控制台應用程序/MVC Web 應用程序中也是如此)。
任何建議將不勝感激…
編輯
- 無法重新創建“多個查詢”的東西。不知道為什麼會這樣,似乎是一個異常情況,暫時把我們帶進了錯誤的小巷
- @Brent Ozar - 謝謝你的建議 - 我們已經執行了這些類型的測試,不幸的是,沒有有用的結果!
- @jco360 - 感謝您的建議。由於整個數據庫的性能很慢(一個慢 = 全部慢,然後一個快 = 全部快),因此索引不是一個啟動器。我是開發人員,在從 SSMS 執行簡單查詢時遇到了同樣的問題。最後,硬體問題可能是答案,雖然 64GB 記憶體和許多處理器應該足以滿足幾乎不使用的伺服器,但可能存在一些硬碟損壞或類似情況?
它也與網路無關,因為測試是從盒子本身執行的。
嘗試在伺服器活動上執行 sql 配置文件跟踪 (http://technet.microsoft.com/en-us/library/ms175047.aspx) - 您可能會遇到一些由同時執行的查詢鎖定表/頁面/索引引起的表鎖定問題.
嘗試執行 perfmon - 當事情變慢時,可能有一些正在執行的東西正在使用所有可用的磁碟/IO/CPU/記憶體資源。尋找任何記憶體交換 - 這會減慢速度。如果是其中之一,那麼您將需要追查原因。注意 CPU 在短時間內處於 100% 狀態是可以的(實際上可以表示最佳性能)。
還要檢查碎片並考慮重建索引。
關閉不需要的服務/應用程序——它們會佔用更適合您的應用程序的資源。
如果一切都很慢並且時間真的很一致,那麼我的猜測將是伺服器上的服務有問題。
一個明顯的選擇是病毒保護,因為某些風味會掛接到 I/O 以擷取低級別的內容。
它也可以像更新檢查器一樣簡單,它會弄亂您的網路堆棧。
備份系統也可能出現故障。
你調查過這些事情嗎?