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 la identifica como una instancia con un consumo de memoria elevado.
Memoria de SQL Server
La memoria de SQL Server se puede dividir en lo siguiente:
- Cachés
- Memoria fija
- Sobrecarga de SQL Server
- Procesamiento de transacciones online (OLTP) en memoria
Cachés
Son objetos de un disco que se pueden volver a cargar, como páginas de bases de datos y procedimientos almacenados. Por lo tanto, SQL Server puede aumentar y reducir el tamaño de estos objetos en función del uso de la memoria. Las cachés incluyen grupos de búferes y cachés de planes.
Memoria fija
La memoria fija puede aumentar y reducirse. Solo se reduce cuando no se usa; por ejemplo, cuando disminuye el número de conexiones o el número de consultas que se están ejecutando. Es diferente de las cachés. Si no hay suficiente memoria fija, SQL Server puede quedarse sin memoria. La memoria fija incluye la memoria de conexión y las concesiones de memoria.
Sobrecarga de SQL Server
La sobrecarga de SQL Server incluye hilos y pilas.
OLTP en memoria
OLTP en memoria incluye tablas en memoria y grupos de archivos en memoria.
El consumo de memoria de SQL Server se controla mediante los ajustes maximum server memory
y memory.memory.limitmb
. Cloud SQL asigna el parámetro memory.memory.limitmb
automáticamente.
Para obtener más información sobre memory.memory.limitmb
, consulta la documentación de Microsoft.
Opciones de optimización de la memoria
Para determinar si una instancia necesita más ajustes de memoria, haz lo siguiente:
- Comprueba el valor de la marca
max server memory (mb)
.Te recomendamos que dejes que Cloud SQL gestione el valor de esta marca. Si debes gestionar este valor manualmente, usa la fórmula de uso
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 Banderas especiales.
- Monitoriza la marca
Page life expectancy
.Page life expectancy
indica el tiempo, en segundos, que la página más antigua permanece en el grupo de búferes. Este valor debe ser superior a 300, tal como recomienda Microsoft. Si se mantiene por debajo de 300, podría indicar que la instancia tiene un uso elevado de la memoria. Ejecuta la siguiente consulta para monitorizarPage 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'
- Comprueba la marca
Memory Grants Pending
.Memory Grants Pending
especifica el número total de procesos que esperan una concesión de memoria del espacio de trabajo. Ejecuta la siguiente consulta para comprobarMemory Grants Pending
. Si esta consulta muestra constantemente concesiones pendientes, significa que el uso de memoria es elevado. Para reducirla, puedes consultar las esperas de la base de datos y ajustar cualquier instrucció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'