Il monitoraggio segnala uno stato Critico e genera un avviso quando la quantità di memoria usata dal pool di risorse è maggiore dell'impostazione della soglia, espressa come percentuale della memoria disponibile per le tabelle dati con ottimizzazione per la memoria per il pool di risorse specifico. Questo monitoraggio è un monitoraggio delle dipendenze (rollup).
Il monitoraggio segnala uno stato critico quando la quantità di memoria usata dal pool di risorse è maggiore dell'impostazione della soglia, espressa come percentuale della memoria disponibile per le tabelle dati con ottimizzazione per la memoria per il pool di risorse specifico. Questo monitoraggio è un monitoraggio delle dipendenze (rollup).
Il pool di risorse denominato quando viene mappato a un database con ottimizzazione per la memoria tiene traccia della memoria allocata a tutte le tabelle con ottimizzazione per la memoria, comprese le tabelle interne usate per diverse strutture all'interno del motore di dati con ottimizzazione per la memoria.
I dati con ottimizzazione per la memoria di SQL Server usano più memoria e in maniera diversa rispetto a SQL Server. È possibile che la quantità di memoria installata e allocata per i dati con ottimizzazione per la memoria diventi insufficiente per soddisfare le esigenze crescenti. In tal caso, potrebbero verificarsi problemi a causa della memoria esaurita.
Per informazioni dettagliate, vedere l'articolo seguente: Associazione di un database con tabelle con ottimizzazione per la memoria a un pool di risorse.
Per risolvere la condizione di memoria insufficiente o esaurita, è necessario liberare parte della memoria esistente riducendone l'uso o rendere disponibile più memoria alle tabelle dati con ottimizzazione per la memoria. Le possibili azioni correttive possono includere:
Controllare se una transazione a lunga esecuzione sta impedendo l'operazione di Garbage Collection della memoria. In tal caso, provare a terminare la transazione a lunga esecuzione e/o esaminare la progettazione dell'applicazione per vedere se è possibile ridurre la durata delle transazioni.
Liberare parte della memoria esistente.
Eliminare le righe delle tabelle con ottimizzazione per la memoria non essenziali e attendere l'esecuzione dell'operazione di Garbage Collection.
Spostare una o più righe in una tabella basata su disco.
Aumentare il valore di MAX_MEMORY_PERCENT nel pool di risorse.
Aumentare la memoria disponibile per l'istanza di SQL Server configurando un valore più alto per Memoria massima del server.
Installare altra memoria.
Nome | Descrizione | Valore predefinito |
Abilitato | Abilita o disabilita il flusso di lavoro. | Sì |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso. | No |
Target | Microsoft.SQLServer.2016.Database |
Parent Monitor | System.Health.PerformanceState |
Algorithm | WorstOf |
Source Monitor | Microsoft.SQLServer.2016.Monitor.UserResourcePool.MemoryConsumption |
Relationship | Microsoft.SQLServer.2016.RelationshipType.DatabaseReferencesUserResourcePool |
Category | PerformanceCollection |
Enabled | True |
Alert Generate | False |
Alert Auto Resolve | False |
Remotable | True |
Accessibility | Public |
<DependencyMonitor ID="Microsoft.SQLServer.2016.DependencyMonitor.Database.MemoryConsumptionRollUp" Accessibility="Public" Enabled="true" Target="SQL2016Core!Microsoft.SQLServer.2016.Database" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" RelationshipType="SQL2016Core!Microsoft.SQLServer.2016.RelationshipType.DatabaseReferencesUserResourcePool" MemberMonitor="Microsoft.SQLServer.2016.Monitor.UserResourcePool.MemoryConsumption">
<Category>PerformanceCollection</Category>
<Algorithm>WorstOf</Algorithm>
<MemberUnAvailable>Error</MemberUnAvailable>
</DependencyMonitor>