2012-12-03 54 views
3

還有其他一些類似的問題,但請不要混淆。SQL Server索引使用情況統計信息多久更新一次並觸發它?

我知道有一個函數STATS_DATE()知道哪裏的統計數據更新,這很好,但我想知道什麼觸發了這些數據的更新或截斷。 我知道這也是一個報告。

但是上週我看到了某些服務器的統計信息,他們給了我這個特殊數據庫中主表的4位數字的非常好的信息。

現在看在同一臺生產服務器和STATS_UPDATE功能返回他們上週六更新,但這臺服務器已經連續數週沒有重啓甚至服務重啓。所以我知道我正在看星期一早上基本積累的數據。

所以,我想知道在哪裏可以設置此設置,以便服務器不斷累積索引使用統計信息,直到我清除日誌或使用的任何存儲爲止。

回答

2

SQL Server爲表和索引維護了各種「統計」。

  1. 直方圖統計。這是查詢優化器使用的統計信息。 STATS_DATE()返回這些更新的最後日期/時間。自動更新直方圖統計數據的標準是500行+表格的20%。所以一張有100,000行的表格,在觸發重新計算之前必須更新20,500行。您無法更改自動統計更新的閾值,但是,您可以關閉自動統計更新和/或手動更新特定表和索引的統計信息。

  2. 使用統計信息:這些可在sys.dm_db_index_usage_stats中找到。索引使用情況統計信息跟蹤來自SELECT查詢的查找和掃描等內容。它們不會被持久化並在重新啓動sql server時重置。如果基礎索引被重建爲「ALTER INDEX ... REBUILD」,但不是「ALTER INDEX ... REORG」,則這些統計信息也會被重置

  3. 操作統計信息:可在sys.dm_db_index_operational_stats中找到這些統計信息。操作統計是諸如頁面拆分,葉級別插入和PAGEIOLATCH延遲之類的事情。這些也是沒有持續的。

+0

那麼,我說的是「2」點。這個服務器在星期六沒有重啓過,也沒有服務,它已經連續數週了,但是統計數據在星期六重新開始,因此我的問題是觸發這個數據重啓的原因(除了服務器/服務重啓,不會發生) –