L'analyse passe en é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 en mémoire de la liste de ressources partagées donnée.
L'analyse passe en é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 en mémoire de la liste de ressources partagées donnée.
Lorsque le pool de ressources nommé est mappé à une base de données à mémoire optimisée, il surveille la mémoire allouée aux tables à mémoire optimisée, y compris les tables internes utilisées pour différentes structures au sein du moteur OLTP en mémoire.
L’OLTP en mémoire de SQL Server utilise plus de mémoire et différemment de SQL Server. Il est possible que la quantité de mémoire que vous avez installée et allouée pour l’OLTP en mémoire devienne inadéquate pour vos besoins croissants. Si c’est le cas, la mémoire pourrait s’avérer insuffisante.
Consultez cet article pour obtenir plus d’informations : Liaison d’une base de données comprenant des tables à mémoire optimisée à une liste de ressources partagées.
Afin de remédier au problème de mémoire faible ou épuisée, il convient de libérer de la mémoire existante en réduisant son utilisation ou de rendre plus de mémoire disponible pour vos tables en mémoire. Les actions pour y remédier sont notamment les suivantes :
Vérifiez si des transactions longues sont en cours d’exécution et empêchent le nettoyage de la mémoire. Si c’est le cas, supprimez la transaction longue et/ou examinez la conception de l’application afin de voir si vous pouvez réduire la durée des transactions.
Libérez de l’espace existant.
Supprimez les lignes de table à mémoire optimisée non essentielles et attendez le nettoyage de mémoire.
Déplacez une ou plusieurs colonnes vers une table sur disque.
Augmentez la valeur de MAX_MEMORY_PERCENT sur le pool de ressources.
Augmentez la mémoire disponible pour l’instance SQL Server en rehaussant la valeur de configuration de mémoire serveur maximale.
Installez plus de mémoire.
Gestion de la mémoire pour OLTP en mémoire
Nom | Description | Valeur par défaut |
Activé |
| Oui |
Génère des alertes |
| Oui |
Intervalle (en secondes) | L'intervalle de temps récurrent en secondes pendant lequel le workflow est exécuté. | 300 |
Nombre d'échantillons | Indique le nombre de dépassements de seuil d'une valeur mesurée avant la modification de l'état. | 6 |
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. |
|
Seuil | La valeur collectée sera comparée avec ce paramètre. | 90 |
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. | 180 |
Target | Microsoft.SQLServer.2014.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.2014.MonitorType.UserResourcePool.MemoryConsumption | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2014.Monitor.UserResourcePool.MemoryConsumption" Target="SQL2014Core!Microsoft.SQLServer.2014.UserResourcePool" ParentMonitorID="SystemHealth!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.2014.MonitorType.UserResourcePool.MemoryConsumption" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2014.Monitor.UserResourcePool.MemoryConsumption.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ResourcePool"]/Name$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='MemoryForSQLInstanceMB']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='PoolAvailableMemoryMB']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='PoolFreeMemoryMB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='PoolFreeMemoryPercent']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='PoolUsedMemoryMB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='TotalMemoryOnTheServerMB']$</AlertParameter7>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="ErrorState" MonitorTypeStateID="ErrorState" HealthState="Error"/>
<OperationalState ID="SuccessState" MonitorTypeStateID="SuccessState" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>300</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>
<Value>$Data/Property[@Name='PoolUsedMemoryPercent']$</Value>
<PoolID>$Target/Property[Type="SQL2014Core!Microsoft.SQLServer.2014.ResourcePool"]/PoolID$</PoolID>
<Threshold>90</Threshold>
<TimeoutSeconds>180</TimeoutSeconds>
<ScriptDelayMsec>0</ScriptDelayMsec>
<NumSamples>6</NumSamples>
</Configuration>
</UnitMonitor>