Nettoyage de la mémoire

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

Le moniteur signale un état Critique et émet une alerte si la quantité d'espace utilisée par les lignes actives dans les fichiers de données optimisées en mémoire passe sous le paramètre de seuil, exprimé en pourcentage de la taille des fichiers de données. Remarque : Ce moniteur est désactivé par défaut. Utilisez des remplacements pour l'activer si nécessaire.

Knowledge Base article:

Résumé

Ce moniteur passe à l’état critique et déclenche une alerte si le facteur de remplissage du récupérateur de mémoire (la quantité d’espace utilisée par les lignes actives dans les fichiers de données à mémoire optimisée, exprimée sous forme de pourcentage de la taille des fichiers de données) passe sous le paramètre de seuil.

Le facteur de remplissage du garbage collection pour le groupe de fichiers de données optimisées en mémoire est une métrique montrant le facteur de remplissage moyen pour tous les fichiers de données/de delta actifs comprenant des lignes insérées/supprimées. Si cette métrique est inférieure à 50 %, elle indique que la fusion automatique prend du retard. Ceci ne pose pas de problème immédiat tant que le nombre de paires de fichiers de point de contrôle est inférieur à 8 000 et que vous disposez de beaucoup d'espace de stockage disponible pour le groupe de fichiers de données optimisées en mémoire.

Remarque : Ce moniteur est désactivé par défaut. Utilisez des remplacements pour l'activer si nécessaire.

Vous trouverez plus d'informations dans la documentation de sys.dm_db_xtp_checkpoint_files (Transact-SQL)

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

La section « Comment fonctionne le nettoyage de la mémoire » est disponible dans le sujet « Création et gestion du stockage pour les objets à mémoire optimisée »

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

Causes

La fusion des paires de fichiers de points de contrôle est déclenchée selon une stratégie de fusion interne. Pour plus d’informations, consultez this article.

Solutions

Exécutez une fusion manuelle et forcez le nettoyage de mémoire comme décrit dans les articles suivants :

.

Paramètres remplaçables

Nom

Description

Valeur par défaut

Priorité de l'alerte

Définit la priorité de l'alerte.

Normal

Gravité de l'alerte

Définit la gravité de l'alerte.

Erreur

Activé

Active ou désactive le flux de travail.

Non

Génère des alertes

Définit si le flux de travail génère une alerte.

Oui

Intervalle (en secondes)

L'intervalle de temps récurrent en secondes pendant lequel le workflow est exécuté.

900

Retard du script (en millisecondes)

Ce paramètre définit le délai entre les requêtes T-SQL consécutives exécutées par le workflow. Cela peut aider à réduire l'encombrement généré par le workflow s'il existe un nombre important d'objets cible. Veuillez consulter le support de Microsoft avant de modifier ce paramètre.

0

Heure de synchronisation

L'heure de synchronisation spécifiée dans un format de 24 heures. Peut être omise.

00:04

Seuil

La valeur collectée sera comparée avec ce paramètre.

50

Délai d'expiration (en secondes)

Spécifie la durée pendant laquelle le workflow est autorisé à être exécuté avant d'être fermé et marqué comme un échec.

300

Element properties:

TargetMicrosoft.SQLServer.2014.DBFileGroupFx
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2014.MonitorType.DBFileGroupFx.GarbageCollectionState
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2014 : Le facteur de remplissage de nettoyage de mémoire de données à mémoire optimisée est trop bas
Le facteur de remplissage moyen de tous les fichiers de données/delta actifs comprenant des lignes insérées/supprimées est trop faible.
Serveur : {1}
Instance SQL Server : {0}
Base de données : {2}
Groupe de fichiers : {3}
Facteur de remplissage : {4} \%
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2014.Monitor.DBFileGroupFx.GarbageCollectionState" Target="SQL2014Core!Microsoft.SQLServer.2014.DBFileGroupFx" ParentMonitorID="SystemHealth!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.2014.MonitorType.DBFileGroupFx.GarbageCollectionState" Accessibility="Public" Enabled="false" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Monitor.DBFileGroupFx.GarbageCollectionState.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ServerRole"]/InstanceName$</AlertParameter1>
<AlertParameter2>$Target/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter2>
<AlertParameter3>$Target/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.Database"]/DatabaseName$</AlertParameter3>
<AlertParameter4>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.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="SQL2014Core!Microsoft.SQLServer.2014.ServerRole"]/InstanceName$</SqlInstanceName>
<DatabaseName>$Target/Host/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.Database"]/DatabaseName$</DatabaseName>
<Value>Property[@Name='StorageUsageFillFactor']</Value>
<Threshold>50</Threshold>
<TimeoutSeconds>300</TimeoutSeconds>
<ScriptDelayMsec>0</ScriptDelayMsec>
</Configuration>
</UnitMonitor>