Konfiguration für "Statistiken automatisch aktualisieren"

Microsoft.SQLServer.Linux.Monitor.Database.AutoUpdateStatConfiguration (UnitMonitor)

Hiermit wird die Einstellung für "Statistiken automatisch aktualisieren" für die Datenbank überwacht. Hinweis: Dieser Monitor ist standardmäßig deaktiviert. Verwenden Sie bei Bedarf Außerkraftsetzungen, um ihn zu aktivieren.

Knowledge Base article:

Zusammenfassung

Dieser Monitor überprüft die Einstellung für "Statistiken automatisch aktualisieren" für diese Datenbank. Da dieser Monitor zu einer Gesamtstandardanforderung gehört, wird eine Warnung generiert, wenn die Einstellung nicht dem angegebenen Standard entspricht.

Der Abfrageoptimierer benötigt aktuelle und genaue Statistiken, um geeignete Pläne zu generieren. In den meisten Fällen empfiehlt es sich, die Statistiken durch SQL Server verwalten zu lassen. Wenn Sie die Optionen "Statistiken automatisch erstellen" und "Statistiken automatisch aktualisieren" deaktivieren, müssen Sie dafür Sorge tragen, die Statistiken auf dem neuesten Stand zu halten. Andernfalls kann es zu einer Beeinträchtigung der Abfrageleistung kommen. Für die meisten Anwendungen sollte diese Optionen aktiviert (ON) werden.

Konfiguration

Wenn die Einstellung "Statistiken automatisch aktualisieren" auf ON festgelegt ist, aktualisiert der Abfrageoptimierer Statistiken, wenn sie von einer Abfrage verwendet werden und wenn sie veraltet sein könnten. Statistiken sind veraltet, nachdem die Datenverteilung in der Tabelle oder indizierten Sicht durch Einfüge-, Aktualisierungs-, Lösch- oder Mergevorgänge geändert wurde. Der Abfrageoptimierer stellt fest, wann Statistiken veraltet sein könnten, indem die Anzahl von Datenänderungen seit der letzten Statistikaktualisierung ermittelt und mit einem Schwellenwert verglichen wird. Der Schwellenwert basiert auf der Anzahl von Zeilen in der Tabelle oder indizierten Sicht. Vor dem Kompilieren einer Abfrage und der Ausführung eines zwischengespeicherten Abfrageplans sucht der Abfrageoptimierer nach veralteten Statistiken. Vor dem Kompilieren einer Abfrage ermittelt der Abfrageoptimierer anhand der Spalten, Tabellen und indizierten Sichten im Abfrageprädikat, welche Statistiken veraltet sein könnten. Vor dem Ausführen eines zwischengespeicherten Abfrageplans überprüft das Datenbankmodul, ob der Abfrageplan auf aktuelle Statistiken verweist. Die AUTO_UPDATE_STATISTICS-Option gilt für Statistikobjekte, die für Indizes, einzelne Spalten in Abfrageprädikaten und mit der CREATE STATISTICS-Anweisung generierte Statistiken erstellt wurden. Diese Option gilt auch für gefilterte Statistiken.

AUTO_UPDATE_STATISTICS {ON | OFF}

Ursachen

Es wird eine Warnung ausgelöst, wenn die Option nicht der erforderlichen Einstellung entspricht. Standardmäßig ist der Monitor so konfiguriert, dass eine Warnung ausgegeben wird, wenn diese Einstellung deaktiviert wird.

Lösungen

Dieses Problem können Sie möglicherweise durch eine der folgenden Aktionen beheben:

Wenn dieser Monitor für diese Datenbank nicht relevant ist, haben Sie zudem folgende Möglichkeiten:

Extern

Ausführlichere Informationen zu dieser Einstellung finden Sie unter: ALTER DATABASE SET-Optionen (Transact-SQL)

Siehe auch Artikel " Verwenden von Statistiken zum Verbessern der Abfrageleistung".

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Warnungspriorität

Definiert die Warnungspriorität.

Normal

Warnungsschweregrad

Definiert den Warnungsschweregrad.

Warnung

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Nein

Erwarteter Wert

Der erwartete Wert der Einstellung für die Datenbankkonfiguration. Informationen zum Anzeigen der geeigneten Werte finden Sie im Abschnitt "Konfiguration" des Knowledge Base-Artikels zu diesem Monitor.

EIN

Generiert Warnungen

Definiert, ob der Workflow eine Warnung generiert.

Ja

Intervall (Sekunden)

Gibt das Wiederholungsintervall in Sekunden für die Ausführung des Workflows an.

43200

Synchronisierungszeit

Die Synchronisierungszeit, angegeben im 24-Stunden-Format. Dieser Wert kann ausgelassen werden.

 

Timeout (Sekunden)

Gibt die Zeit an, zu der der Workflow ausgeführt werden dann, bevor er geschlossen und als fehlerhaft markiert wird.

300

Timeout für Datenbankverbindung (Sekunden)

Es tritt ein Fehler beim Workflow auf, und ein Ereignis wird registriert, wenn der Workflow nicht innerhalb des angegebenen Zeitraums auf die Datenbank zugreifen kann.

15

Element properties:

TargetMicrosoft.SQLServer.Linux.Database
Parent MonitorMicrosoft.SQLServer.Linux.Rollup.Database.AutomaticConfiguration
CategoryConfigurationHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Linux.MonitorType.Database.DBConfigurationStatus
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL für Linux: Konfigurationsfehler beim automatischen Aktualisieren von Statistiken
Die Einstellung für "Statistiken automatisch aktualisieren" für die Datenbank "{0}" in der SQL-Instanz "{1}" auf dem Computer "{2}" entspricht nicht den Best Practices.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Linux.Monitor.Database.AutoUpdateStatConfiguration" Accessibility="Public" Enabled="false" Target="SqlDiscL!Microsoft.SQLServer.Linux.Database" ParentMonitorID="Microsoft.SQLServer.Linux.Rollup.Database.AutomaticConfiguration" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Linux.MonitorType.Database.DBConfigurationStatus" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Linux.Monitor.Database.AutoUpdateStatConfiguration.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ConfigurationValueOK" MonitorTypeStateID="ConfigurationValueOK" HealthState="Success"/>
<OperationalState ID="ConfigurationValueNotOK" MonitorTypeStateID="ConfigurationValueNotOK" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<ConfigName>AutoUpdateStat</ConfigName>
<ExpectedValue>ON</ExpectedValue>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>