Sql-Server-2005

SQL Server 性能突然下降

  • November 9, 2018

我有一個 SQL Server 2005,它最近變得不可預測,我正在摸索為什麼。在幾秒鐘內執行的查詢正在更改計劃並花費幾分鐘(在全表掃描或索引假離線中花費時間)。現在第一個也是最明顯的事情是,統計數據已經過時導致優化器感到困惑,但我相信情況並非如此 - 首先因為基礎數據沒有顯著變化(例如,在一年的數據之上添加一天的數據已經在表格中),其次是因為自動創建統計資訊和自動更新統計資訊都是正確的。然而,優化變得困惑;在 Tuning Advisor 中執行 SQL 給了我很多多列CREATE STATISTICS語句,這些語句似乎可以修復它(直到下一個 SQL 錯誤行為)。

我可以用來解決根本原因的策略有什麼想法嗎?為什麼“正常”統計數據還不夠?

如果您的首要等待是 SOS_SCHEDULER_YIELD,那麼您似乎對 CPU 有一些壓力。但這可能是其他原因的結果,例如您的設計不再足以滿足您的查詢。我知道您說過您只添加了一天的數據,但您可能已經達到了臨界點。

您的查詢是如何發出的?是動態SQL嗎?你在使用儲存過程嗎?你在使用 sp_executesql 嗎?您是否有可能遇到參數嗅探的情況?你的數據庫設計是什麼樣的?PK和FK的關係是什麼?

你有一個好的計劃的例子嗎?如果您能夠確定一個好的計劃,您可以使用計劃指南來強制查詢以特定方式執行。

你能舉一個好的計劃失敗的例子嗎?

最後,從 Adam Machanic 那裡獲取一份 sp_whoIsActive ( http://whoisactive.com/ ) 的副本,並使用它來確定有關正在執行的查詢的更多資訊。如果您希望能夠從 sp_whoIsActive 擷取輸出,請轉到此處http://www.littlekendra.com/2011/02/01/whoisactive/

引用自:https://dba.stackexchange.com/questions/1714