Garbage Collection

Microsoft.SQLServer.2016.Monitor.DBFileGroupFx.GarbageCollectionState (UnitMonitor)

Der Monitor meldet einen kritischen Status und löst eine Warnung aus, wenn der von aktiven Zeilen in speicheroptimierten Datendateien belegte Speicherplatz unter den festgelegten Schwellenwert fällt, ausgedrückt in Prozent der Größe der Datendateien. Hinweis: Dieser Monitor ist standardmäßig deaktiviert. Verwenden Sie bei Bedarf Außerkraftsetzungen, um ihn zu aktivieren.

Knowledge Base article:

Zusammenfassung

Dieser Monitor gibt einen kritischen Status und eine Warnung aus, wenn der Garbage Collector-Füllfaktor (der von aktiven Reihen belegte Platz in speicheroptimierten Datendateien in Prozent der Größe der Datendateien) unter den eingestellten Schwellenwert fällt.

Beim Garbage Collection-Füllfaktor für speicheroptimierte Datendateigruppen handelt es sich um die Metrik, die den durchschnittlichen Füllfaktor für alle aktiven Daten-/Deltadateien mit eingefügten/gelöschten Zeilen anzeigt. Wenn diese Metrik unter 50 % liegt, deutet dies auf zu langsame automatische Mergevorgänge hin. Dies ist nicht unmittelbar problematisch, solange die Anzahl der CFPs (Prüfpunkt-Dateipaare) unter 8.000 liegt und in der speicheroptimierten Datendateigruppe noch viel Speicher zur Verfügung steht.

Hinweis: Dieser Monitor ist standardmäßig deaktiviert. Verwenden Sie bei Bedarf Außerkraftsetzungen, um ihn zu aktivieren.

Weitere Informationen finden Sie in der sys.dm_db_xtp_checkpoint_files-Dokumentation (Transact-SQL).

http://go.microsoft.com/fwlink/?LinkId=799285

Den Abschnitt "So funktioniert die Garbage Collection" finden Sie unter dem Thema "Erstellen und Verwalten von Speicher für arbeitsspeicheroptimierte Objekte"

http://go.microsoft.com/fwlink/?LinkId=799286

Ursachen

Die CFP-Zusammenführung wird auf Basis einer internen Zusammenführungsrichtlinie ausgelöst. Weitere Informationen finden Sie in diesem Artikel.

Lösungen

Führen Sie eine manuelle Zusammenführung und erzwingen Sie eine Garbage Collection wie in diesen Artikeln beschrieben durch:

.

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

Name

Beschreibung

Standardwert

Warnungspriorität

Definiert die Warnungspriorität.

Normal

Warnungsschweregrad

Definiert den Warnungsschweregrad.

Fehler

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Nein

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.

900

Skriptverzögerung (Millisekunden)

Über diesen Parameter wird die Verzögerung zwischen aufeinanderfolgenden T-SQL-Abfragen festgelegt, die durch den Workflow ausgeführt werden. Dadurch lässt sich die Ressourcenbeanspruchung durch diesen Workflow bei einer großen Anzahl an Zielobjekten reduzieren. Halten Sie Rücksprache mit dem Microsoft-Support, bevor Sie diesen Parameter ändern.

0

Synchronisierungszeit

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

00:05

Schwellenwert

Der ermittelte Wert wird mit diesem Parameter verglichen.

50

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.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.MonitorType.DBFileGroupFx.GarbageCollectionState
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2016: Füllfaktor für speicheroptimierte Garbage Collection zu niedrig
Der durchschnittliche Füllfaktor für alle AKTIVEN Daten-/Deltadateien, die eingefügte/gelöschte Zeilen enthalten, ist zu niedrig.
Server: {1}
SQL Server-Instanz: {0}
Datenbank: {2}
Dateigruppe: {3}
Füllfaktor: {4} \%
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.Monitor.DBFileGroupFx.GarbageCollectionState" Target="SQL2016Core!Microsoft.SQLServer.2016.DBFileGroupFx" ParentMonitorID="SystemHealth!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.2016.MonitorType.DBFileGroupFx.GarbageCollectionState" Accessibility="Public" Enabled="false" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Monitor.DBFileGroupFx.GarbageCollectionState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
<AlertParameter3>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</AlertParameter3>
<AlertParameter4>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.FileGroup"]/GroupName$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='StorageUsageFillFactor']$</AlertParameter5>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Critical" MonitorTypeStateID="Critical" HealthState="Error"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<ServerName>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</SqlInstanceName>
<DatabaseName>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</DatabaseName>
<Value>Property[@Name='StorageUsageFillFactor']</Value>
<Threshold>50</Threshold>
<TimeoutSeconds>300</TimeoutSeconds>
<ScriptDelayMsec>0</ScriptDelayMsec>
</Configuration>
</UnitMonitor>