2

我們有一個SQL Server 2012實例,具有自動statitics設置爲ON爲DB:當它設置爲自動更新時,爲什麼這些SQL Server統計信息已過時?

enter image description here

但後來我跑了查詢,以檢查一些統計數據,以及一些尚未更新在一段時間:

enter image description here

  1. 爲什麼會出現這種情況?是否有規則來確定SQL Server是否更新這些索引未觸發的統計信息?
  2. 我需要照顧嗎?我如何知道我是否需要更新它們,或者如果它們對我造成性能問題?

謝謝!

+0

你確定桌子上有變化嗎?都是統計錯誤的,或者只是對於一些表格,如果只是一些表格,他們有什麼共同點? – RealCheeseLord

回答

2

即使你設置自動更新的統計數據爲真,他們將只更新時閾值一直reached..this是不同的不同版本

閾值的SQL Server 2012或以上:

  1. 表的大小已經從0去> 0行

  2. 當統計聚集在表中的行的數量爲500或更小,引線的colmodctr統計對象的ing列已經改變了500多個,此後

  3. 當統計信息被收集並且統計對象的前導列的colmodctr已經改變超過500 +在表中的行數的20%時,統計聚集

對於SQLServer的2016年,很少有大的變化和SQL更新統計用新算法(讀作比老版本更頻繁地)

我需要照顧嗎?我如何知道我是否需要更新它們,或者如果它們對我造成性能問題?

通常人們在週末安排維護工作,這包括索引重建/統計更新..

這通常應該照顧大多數databases.In你的情況,如果你看到的性能問題,由於無效統計,你可以更新他們manually.We做到每週一次,但sites like StackOverflow does it more often

update stats tablename 

延伸閱讀/引用:
Statistics Used by the Query Optimizer in Microsoft SQL Server 2008
Understanding When Statistics Will Automatically Update

+1

謝謝..這是有道理的。其中一些表格不夠活躍,所以它很有意義。還有兩個問題:1)「通常人們在週末安排維護工作,這包括索引重建/統計更新.._」。我明白需要手動索引重建,但是如果AUTO STATS打開,我不需要手動進行統計更新,對吧? 2)「如果您看到由於無效統計而導致的性能問題」。我如何知道我的表現問題是否與無效統計相關?我似乎記得一些關於「估計與實際行數」的內容。 – RPM1984

+0

更新統計信息會導致很多IO,因此在休息日期間進行調度是我可以考慮關閉的一個原因。第二個是如果sql在執行時發現查詢的最新狀態不是最新的,則查詢執行會在短時間內停止的時間,直到統計信息重建 – TheGameiswar

+0

估計行數vs實際行數是正確的方法 – TheGameiswar

相關問題