Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum sind diese SQL Server-Statistiken veraltet, wenn sie auf automatische Aktualisierung eingestellt sind?

Auch wenn Sie die Statistik automatisch aktualisieren auf „true“ setzen, werden sie nur aktualisiert, wenn ein Schwellenwert erreicht wurde. Dies ist für verschiedene Versionen unterschiedlich

Schwellenwerte für SQL Server 2012 oder älter:

  1. Die Tabellengröße ist von 0 auf> 0 Zeilen

    gestiegen
  2. Die Anzahl der Zeilen in der Tabelle, als die Statistiken erfasst wurden, betrug 500 oder weniger, und colmodctr der führenden Spalte des Statistikobjekts hat sich seitdem um mehr als 500 geändert

  3. Die Tabelle hatte mehr als 500 Zeilen, als die Statistiken erfasst wurden, und colmodctr der führenden Spalte des Statistikobjekts hat sich um mehr als 500 + 20 % der Anzahl der Zeilen in der Tabelle geändert, als die Statistiken erfasst wurden

Für SQLServer 2016 gibt es einige größere Änderungen und SQL-Aktualisierungsstatistiken mit einem neuen Algorithmus (wird häufiger gelesen als bei alten Versionen)

Normalerweise planen die Leute Wartungsarbeiten an Wochenenden ein, und dazu gehören Indexneuaufbau/Statistikaktualisierung..

Dies sollte normalerweise für die meisten Datenbanken sorgen. In Ihrem Fall können Sie Leistungsprobleme aufgrund ungültiger Statistiken manuell aktualisieren. Wir tun dies einmal pro Woche, aber Sites wie StackOverflow machen das häufiger

update stats tablename

Weiterführende Literatur/Referenzen:
Vom Abfrageoptimierer verwendete Statistiken in Microsoft SQL Server 2008
Verstehen, wann Statistiken automatisch aktualisiert werden