Le moniteur passe à l'état Critique et émet une alerte lorsque la quantité de mémoire utilisée par la liste de ressources partagées dépasse le paramètre de seuil, exprimé sous forme de pourcentage de mémoire disponible pour les tables de données à mémoire optimisée de la liste de ressources partagées.
Le moniteur passe à l'état Critique et émet une alerte lorsque la quantité de mémoire utilisée par la liste de ressources partagées dépasse le paramètre de seuil, exprimé sous forme de pourcentage de mémoire disponible pour les tables de données à mémoire optimisée de la liste de ressources partagées.
Quand le pool de ressources nommé est mappé à une base de données avec des tables à mémoire optimisée, il surveille la mémoire allouée à toutes les tables à mémoire optimisée, y compris les tables internes utilisées pour différentes structures au sein du moteur de données à mémoire optimisée.
Les données à mémoire optimisée de SQL Server utilisent plus de mémoire que SQL Server et différemment de SQL Server. Il est possible que la quantité de mémoire que vous avez installée et allouée pour les données à mémoire optimisée devienne inadéquate pour vos besoins croissants. Si c’est le cas, la mémoire pourrait s’avérer insuffisante.
Pour plus d'informations, consultez cet article : Liaison d’une base de données comprenant des tables à mémoire optimisée à une liste de ressources partagées.
Pour remédier au problème de mémoire faible ou épuisée, vous devez libérer de la mémoire existante en réduisant son utilisation ou de rendre plus de mémoire disponible pour vos données à mémoire optimisée. Les actions pour y remédier sont notamment les suivantes :
Vérifiez si des transactions longues empêchent le nettoyage de la mémoire. Si oui, tuez la transaction longue et/ou examinez la conception de l'application pour voir si vous pouvez réduire la durée des transactions.
Libérez de la mémoire.
Supprimez les lignes non essentielles de la table optimisée en mémoire et attendez le garbage collection.
Déplacez une ou plusieurs lignes dans une table sur disque.
Augmentez la valeur de MAX_MEMORY_PERCENT pour le pool de ressources.
Augmentez la mémoire disponible pour l'instance SQL Server en configurant la mémoire maximale du serveur sur une valeur plus élevée.
Installez de la mémoire supplémentaire.
Gestion de la mémoire pour les données à mémoire optimisée
Nom | Description | Valeur par défaut |
Priorité d'alerte | Définit la priorité de l'alerte. | Normale |
Gravité d'alerte | Définit la gravité de l'alerte. | Erreur |
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) | Intervalle régulier (en secondes) auquel exécuter le flux de travail. | 900 |
Nombre d'échantillons | Indique le nombre de dépassements de seuil d'une valeur mesurée avant que l'état soit changé. | 6 |
Heure de synchronisation | Heure de la synchronisation spécifiée selon un format de 24 heures. Peut être omise. |
|
Seuil | La valeur collectée sera comparée avec ce paramètre. | 90 |
Délai d'expiration (secondes) | Spécifie la durée pendant laquelle le flux de travail est autorisé à s’exécuter avant d’être fermé et marqué comme ayant échoué. | 300 |
Délai d’attente pour la connexion de base de données (secondes) | Le workflow échoue et enregistre un événement s’il ne peut pas accéder à la base de données pendant la période spécifiée. | 15 |
Target | Microsoft.SQLServer.Windows.UserResourcePool | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Windows.MonitorType.UserResourcePool.MemoryConsumption | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.UserResourcePool.MemoryConsumption" Target="SqlDiscW!Microsoft.SQLServer.Windows.UserResourcePool" ParentMonitorID="Health!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.Windows.MonitorType.UserResourcePool.MemoryConsumption" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.UserResourcePool.MemoryConsumption.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.ResourcePool"]/Name$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ErrorState" MonitorTypeStateID="ErrorState" HealthState="Error"/>
<OperationalState ID="SuccessState" MonitorTypeStateID="SuccessState" HealthState="Success"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Host/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<Threshold>90</Threshold>
<NumSamples>6</NumSamples>
<PoolName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.ResourcePool"]/Name$</PoolName>
</Configuration>
</UnitMonitor>