El monitor notifica un estado crítico y genera una alerta cuando la cantidad de memoria que usa el grupo de recursos es superior a la configuración de umbral, expresada como porcentaje de la memoria disponible para las tablas de datos con optimización para memoria para el grupo de recursos determinado.
El monitor notifica un estado crítico y genera una alerta cuando la cantidad de memoria que usa el grupo de recursos es superior a la configuración de umbral, expresada como porcentaje de la memoria disponible para las tablas de datos con optimización para memoria para el grupo de recursos determinado.
El grupo de recursos indicado al asignar a una base de datos con optimización para memoria realiza un seguimiento de la memoria asignada a todas las tablas con optimización para memoria, incluidas las tablas internas que se usan para diversas estructuras dentro del motor de datos con optimización para memoria.
Los datos con optimización para memoria de SQL Server usan más memoria y de maneras diferentes que SQL Server. Es posible que la cantidad de memoria que ha instalado y asignado para los datos con optimización para memoria se vuelva inadecuada para sus crecientes necesidades. De ser así, podría quedarse sin memoria.
Consulte este artículo para obtener más detalles: Enlazar una base de datos con tablas con optimización para memoria a un grupo de recursos.
Para resolver la condición de baja memoria o sin memoria, tiene que reducir el uso para liberar memoria existente o hacer que haya más memoria disponible para sus tablas de datos con optimización para memoria. Entre las posibles medidas correctivas se incluyen:
Compruebe si hay transacciones de larga ejecución que están evitando una recolección de elementos no utilizados de memoria. En caso positivo, piense en detener la transacción de larga ejecución y analizar el diseño de la aplicación para ver si puede reducir la duración de las transacciones.
Libere la memoria existente.
Elimine las filas de tablas con optimización para memoria no esenciales y espere la recolección de elementos no utilizados.
Mueva una o más filas a una tabla basada en disco.
Aumente el valor de MAX_MEMORY_PERCENT en el grupo de recursos.
Aumente la memoria disponible a la instancia de SQL Server configuración la memoria de servidor máximo en un valor superior.
Instale memoria adicional.
Cómo administrar su memoria para los datos con optimización para memoria
Nombre | Descripción | Valor predeterminado |
Prioridad de alerta | Define la prioridad de la alerta. | Normal |
Gravedad de alerta | Define la gravedad de la alerta. | Error |
Habilitado | Habilita o deshabilita el flujo de trabajo. | Sí |
Genera alertas | Define si el flujo de trabajo genera una alerta. | Sí |
Intervalo (segundos) | Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo. | 300 |
Número de ejemplos | Indica cuántas veces debe superar un umbral un valor medido para que cambie el estado. | 6 |
Retraso de script (milisegundos) | Este parámetro define el retraso entre las consultas T-SQL consecutivas que ejecuta el flujo de trabajo. Puede ayudar a reducir la superficie que genera el flujo de trabajo en caso de gran número de objetos de destino. Consulte con el soporte técnico de Microsoft antes de cambiar este parámetro. | 0 |
Hora de sincronización | Hora de sincronización especificada en un formato de 24 horas. Se puede omitir. | 00:06 |
Umbral | El valor recopilado se comparará con este parámetro. | 90 |
Tiempo de espera (segundos) | Especifica el tiempo durante el que se puede ejecutar el flujo de trabajo antes de que se cierre y se marque como error. | 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>
</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>