En este documento, se explica cómo revisar y optimizar una instancia de Cloud SQL para SQL Server si el recomendador de instancias con aprovisionamiento insuficiente identifica que esa instancia tiene un consumo elevado de memoria.
Memoria de SQL Server
La memoria de SQL Server se puede dividir de la siguiente manera:
- Caché
- Memoria fija
- Sobrecarga de SQL Server
- Procesamiento transaccional en línea en la memoria (OLTP)
Caché
Estos son objetos de un disco que se pueden volver a cargar, como las páginas de la base de datos y los procedimientos almacenados. Como resultado, SQL Server puede aumentar y reducir estos objetos según la utilización en la memoria. Las cachés incluyen las de grupos de búferes y de planes.
Memoria fija
La memoria fija puede aumentar o reducirse. Solo se reduce cuando no está en uso. Por ejemplo, cuando disminuye la cantidad de conexiones o disminuye la cantidad de consultas que se ejecutan. Es diferente de las cachés. Si no hay suficiente memoria fija, SQL Server puede quedarse sin memoria. La memoria fija incluye memoria de conexión y otorgamientos de memoria.
Sobrecarga de SQL Server
La sobrecarga de SQL Server incluye subprocesos y pilas.
OLTP en memoria
OLTP en memoria incluye tablas en la memoria y grupos de archivos en la memoria.
El consumo de memoria de SQL Server se controla mediante la configuración de maximum server memory
y memory.memory.limitmb
. Cloud SQL establece el parámetro memory.memory.limitmb
de forma automática.
Para obtener más información sobre memory.memory.limitmb
, consulta la documentación de Microsoft.
Opciones para optimizar la memoria
Para determinar si una instancia necesita más ajuste de memoria, haz lo siguiente:
- Verifica el valor de la marca
max server memory (mb)
.Te recomendamos que permitas que Cloud SQL administre el valor de esta marca. Si debes administrar este valor de forma manual, usa la fórmula de uso de
max_server_memory (mb)
que se describe en Prácticas recomendadas para evitar que SQL Server consuma toda la memoria.Para obtener más información, consulta Marcas especiales.
- Supervisa la marca
Page life expectancy
.Page life expectancy
indica la cantidad de tiempo, en segundos, que la página más antigua permanece en el grupo de búferes. Este valor debe ser mayor que 300 según lo recomendado por Microsoft. Si se reduce de forma constante a menos de 300, podría ser un indicador de que la instancia experimenta una utilización alta de memoria. Ejecuta la siguiente consulta para supervisarPage life expectancy
.SELECT [object_name], [counter_name], [cntr_value] FROM sys.dm_os_performance_counters WHERE [object_name] LIKE '%Manager%' AND [counter_name] = 'Page life expectancy'
- Verifica la marca
Memory Grants Pending
.Memory Grants Pending
especifica la cantidad total de procesos que esperan una concesión de memoria del lugar de trabajo. Ejecuta la siguiente consulta para verificarMemory Grants Pending
. Si esta consulta muestra de forma coherente las asignaciones pendientes, indica una utilización de memoria alta. Para reducirla, consulta las esperas de la base de datos y ajusta cualquier declaración que esté esperando memoria.SELECT @@SERVERNAME AS [Server Name], RTRIM([object_name]) AS [Object Name], cntr_value AS [Memory Grants Pending] FROM sys.dm_os_performance_counters WITH(NOLOCK) WHERE [object_name] LIKE N'%Memory Manager%' -- Handles named instances AND counter_name = N'Memory Grants Pending'