Espace libre de conteneur de groupe de fichiers de données à mémoire optimisée

Microsoft.SQLServer.2016.Monitor.Container.FreeSpacePercent (UnitMonitor)

Ce moniteur émet un avertissement lorsque l'espace disque disponible pour le conteneur de groupe de fichiers de données à mémoire optimisée est inférieur au paramètre de seuil d'avertissement, exprimé sous forme de pourcentage de la somme de la taille du conteneur de groupe de fichiers de données à mémoire optimisée et de l'espace disque libre. Le moniteur émet un état critique lorsque l'espace disponible est inférieur au seuil critique.

Knowledge Base article:

Résumé

Ce moniteur émet un avertissement lorsque l'espace disque disponible pour le conteneur de groupe de fichiers de données à mémoire optimisée est inférieur au paramètre de seuil d'avertissement, exprimé sous forme de pourcentage de la somme de la taille du conteneur de groupe de fichiers de données à mémoire optimisée et de l'espace disque libre. Le moniteur émet un état critique lorsque l'espace disponible est inférieur au seuil critique.

Le dossier des conteneurs de groupes de fichiers de données à mémoire optimisée croît généralement au fur et à mesure de l’ajout de données au sein des tables de données à mémoire optimisée. Les administrateurs doivent donc surveiller s'il reste suffisamment d’espace dans l’emplacement de stockage pour le dossier des conteneurs.

Causes

Lorsque l’espace disque disponible sur le lecteur où est configuré l’emplacement de stockage de la base de données devient trop faible, des défaillances peuvent se produire et empêcher le traitement efficace des données, retarder les requêtes des utilisateurs ou affecter d’autres applications qui partagent la même allocation d’espace disque.

Le stockage est alloué en tant que partie intégrante d'opérations DML sur les tables à mémoire optimisée durables. Vous devez configurer le stockage pour atteindre jusqu’à 4 fois la taille des données à mémoire optimisée des tables à mémoire optimisée durables. Si vous avez configuré le stockage de manière adéquate, mais que l’espace de stockage libre reste faible, il est possible que les IOPS prises en charge par les conteneurs ne puissent pas prendre en charge la demande de la charge de travail. Il est généralement recommandé que les conteneurs prennent en charge 3 fois les IOPS du taux de génération de données afin de constituer la population initiale des fichiers de données/delta et pour l’opération de fusion automatique nécessitant la lecture des fichiers de données/delta sources, puis de les fusionner en une CFP cible.

Solutions

La solution pour un espace disque disponible faible dépend des causes principales, qui doivent être analysées chaque fois que ce problème apparaît. Le problème peut être soulagé par une des nombreuses approches possibles :

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

Seuil critique

Le moniteur passe à l’état Critique si la valeur tombe sous ce seuil.

10

Activé

Active ou désactive le flux de travail.

Oui

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.

 

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

Seuil d'avertissement

Le moniteur passe à l’état Avertissement si la valeur tombe sous ce seuil.

20

Element properties:

TargetMicrosoft.SQLServer.2016.Container
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.MonitorType.Container.FreeSpacePercent
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2016 : Espace libre insuffisant pour le conteneur de groupe de fichiers de données à mémoire optimisée
Il y a seulement {7} \% d'espace libre disponible pour le conteneur de groupes de fichiers de données à mémoire optimisée « {0} » sur le lecteur « {5} », ce qui est inférieur au seuil d'alerte configuré.
Serveur : {4}
Instance SQL Server : {3}
Base de données : {2}
Groupe de fichiers : {1}
Conteneur : {0}
Lecteur (Point de montage) : {5}
Taille du disque : {6} Mo
Espace libre du conteneur de groupe de fichiers de données à mémoire optimisée : {8} Mo ({7}\%)
Taille du conteneur de groupes de fichiers de données à mémoire optimisée : {9} Mo
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.Monitor.Container.FreeSpacePercent" Target="SQL2016Core!Microsoft.SQLServer.2016.Container" ParentMonitorID="SystemHealth!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.2016.MonitorType.Container.FreeSpacePercent" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Monitor.Container.FreeSpacePercent.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Container"]/ContainerName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.FileGroup"]/GroupName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</AlertParameter3>
<AlertParameter4>$Target/Host/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter4>
<AlertParameter5>$Target/Host/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter5>
<AlertParameter6>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Container"]/ContainerStorage$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='DriveTotalSizeMB']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='FreeSpacePercent']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='FreeSpaceSpaceMB']$</AlertParameter9>
<AlertParameter10>$Data/Context/Property[@Name='AllocatedSizeMB']$</AlertParameter10>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Critical" MonitorTypeStateID="ContainerFreeSpaceCritical" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="ContainerFreeSpaceWarning" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="ContainerFreeSpaceSuccess" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<ConnectionString>$Target/Host/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ConnectionString$</ConnectionString>
<ServerName>$Target/Host/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</SqlInstanceName>
<DatabaseName>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</DatabaseName>
<DBFileId>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Container"]/ContainerID$</DBFileId>
<Value>Property[@Name='FreeSpacePercent']</Value>
<CriticalThreshold>10</CriticalThreshold>
<WarningThreshold>20</WarningThreshold>
<TimeoutSeconds>300</TimeoutSeconds>
<ScriptDelayMsec>0</ScriptDelayMsec>
</Configuration>
</UnitMonitor>