Sql-Server

為什麼將自動更新統計資訊設置為 False?

  • June 30, 2021

作為更廣泛的收購項目的一部分,我剛剛繼承了大約 20 個 SQL Server 實例。我正在評估性能,我不喜歡維護計劃的實施方式。

我看到每天的總索引重建(我可以處理這個)以及每天手動更新統計數據。

大約一半的數據庫已設置為 Auto Update Statistics = False,原因尚不清楚,除了我被告知這是為了減少“性能問題”……

我一直認為並努力將其設置為 True 的最佳實踐,並且認為如果此設置為 True,則不需要手動更新。我錯了嗎?

誰能解釋將此設置為 False 的好處是什麼,而是進行每日手動更新?

我應該提一下,一些數據庫是高度事務性的(每天數百萬次插入、刪除、更新),另一些數據庫的事務率很低,有些幾乎都是只讀的。儘管將自動更新設置設置為 False,但沒有押韻或理由。這似乎是一個彩票。

你是對的,我也相信在大多數情況下Auto Update statistics應該設置為 true 我們應該允許 SQL Server 決定何時更新統計資訊並相信我它做得很好。當此設置為 true 時,它確保更新有關欄位中數據分佈的統計資訊,這最終將幫助優化器準備更好的計劃。這裡要注意的重要一點是,當表中 20% 的數據更改時,自動更新統計資訊會觸發。所以你不應該覺得在一個有 100K 行的表上,如果更新了 10 行,那麼狀態更新就會觸發。

Paul Randal 在部落格了解統計數據何時自動更新中進行了更深入的分析。如果此選項設置為 true,我沒有看到任何缺點。是的,當此選項設置為 true 時,您可以看到一些 I/O 活動。

可以從部落格中得出的重要結論是

即使某個統計資訊因修改而過時,修改完成後也不會自動更新。該統計資訊將在查詢計劃下次使用時自動更新。

對於您只讀取數據庫或僅執行選擇操作且沒有 DML 操作的數據庫的情況,在這種情況下,您可以將選項保留為 false,但如果您保持其為 true,也不會造成任何傷害。我們大多看到具有一定活動量的數據庫。

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