Durchschnittliche Länge der Zeilenketten in den Hashbuckets

Microsoft.SQLServer.2016.Monitoring.HashIndexAvgChainLengthMonitor (UnitMonitor)

Dieser Monitor überprüft die Anzahl leerer Buckets im Hashindex und die durchschnittliche Länge der Zeilenketten in der SQL-Datenbank.

Knowledge Base article:

Zusammenfassung

Dieser Monitor überprüft die durchschnittliche Länge der Zeilenketten in den Hashbuckets für Tabellen in dieser Datenbank. Da dieser Monitor zu einer Gesamtstandardanforderung gehört, wird eine Warnung generiert, wenn die Einstellung nicht dem angegebenen Standard entspricht.

Konfiguration

Die Indizes werden für den effizienten Zugriff auf die Daten in SQL Server-Tabellen verwendet. Durch die Angabe der richtigen Indizes lässt sich die Abfrageleistung erheblich steigern. Der Monitor gibt eine Warnung aus, wenn "empty_bucket_percent" den Schwellenwert für leere Buckets in Prozent und "avg_chain_length" den Schwellenwert für die durchschnittliche Kettenlänge übersteigt, zu viele Duplikate vorliegen und die Nutzung des NONCLUSTERED-Index sinnvoller wäre.

Extern

Detailliertere Informationen finden Sie hier:

Indizes für speicheroptimierte Tabellen

Parameter, die außer Kraft gesetzt werden können

Name

Beschreibung

Standardwert

Warnungspriorität

Definiert die Warnungspriorität.

Normal

Warnungsschweregrad

Definiert den Warnungsschweregrad.

Warnung

Schwellenwert für die durchschnittliche Kettenlänge

Schwellenwert für die durchschnittliche Kettenlänge, die die durchschnittliche Länge von Zeilenketten in den Hashbuckets angibt.

100

Anzahl von Anzeigeindizes

Die angezeigte Anzahl nicht konfigurierter Indizes gemäß bewährter Methode.

5

Schwellenwert für leere Buckets in Prozent

Schwellenwert für leere Buckets in Prozent, der die Anzahl leerer Buckets im Hashindex angibt.

10

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Generiert Warnungen

Definiert, ob der Workflow eine Warnung generiert.

Ja

Intervall (Sekunden)

Das periodische Intervall in Sekunden, in dem der Workflow ausgeführt werden soll.

43200

Synchronisierungszeit

Die in einem 24-Stunden-Format angegebene Synchronisierungszeit. Kann ausgelassen werden.

 

Timeout (Sekunden)

Gibt die Zeit an, die der Workflow ausgeführt werden darf, bevor er geschlossen und als fehlgeschlagen markiert wird.

300

Element properties:

TargetMicrosoft.SQLServer.2016.DBFileGroupFx
Parent MonitorSystem.Health.ConfigurationState
CategoryConfigurationHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.Monitoring.HashIndexAvgChainLength.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
SQL 2016: Fehler bei durchschnittlicher Länge der Zeilenketten in den Hashbuckets
Die Datenbank "{0}" in der SQL-Instanz "{1}" auf dem Computer "{2}" umfasst Tabellen mit Indizes, die zu viele Duplikate enthalten. Die Verwendung eines NONCLUSTERED-Index wird empfohlen. {3}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.Monitoring.HashIndexAvgChainLengthMonitor" Accessibility="Public" Enabled="true" Target="SQL2016Core!Microsoft.SQLServer.2016.DBFileGroupFx" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.Monitoring.HashIndexAvgChainLength.MonitorType" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Monitoring.HashIndexAvgChainLengthMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='Status']$</AlertParameter4>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Health" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<SqlInstanceName>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</SqlInstanceName>
<ConnectionString>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ConnectionString$</ConnectionString>
<ServiceName>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</ServiceName>
<DatabaseName>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</DatabaseName>
<IntervalSeconds>43200</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<SyncTime/>
<EmptyBucketPercentThreshold>10</EmptyBucketPercentThreshold>
<AvgChainLengthThreshold>100</AvgChainLengthThreshold>
<ErrorTopLines>5</ErrorTopLines>
</Configuration>
</UnitMonitor>