Algunas veces podemos percatarnos del comportamiento de aumento de consumo de Memoria de MSSQL, el cual podemos llegar a pensar que SQL Server tiene algún defecto al consumir toda la Memoria RAM existente sin motivo aparente. Sin embargo, este es un comportamiento normal y no solo eso, si no que además esta gestión dinámica y automática de la memoria en SQL Server es la configuración recomendada.
¿Que puedo hacer si SQL Server consume mucha memoria RAM?
Es posible Limitar la Cantidad Máxima de Memoria RAM de consumo a una instancia de SQL Server, en entornos locales (Equipo de pruebas o Micro Empresas) donde se ejecuta MSSQL junto con otros servicios tales como Active Directory, MS Exchange, etc. Podemos limitar el uso de memoria a una instancia de SQL Server para no comprometer los recursos de los demás servicios,
Por otro lado, en entornos empresariales, tratamos con servidores dedicados de base de datos, por lo cual esta configuración no tiene sentido alguno.
En otro sentido, no es recomendable compartir el servidor que ejecuta SQL Server con otros servicios tales como los que mencionamos en un principio ya que se comprometen los recursos del mismo y podemos obtener resultados negativos en la estabilidad (aun con instancias SQL limitadas) de los servicios tanto de SQL como los demás que estemos ejecutando.
Si ya hemos decidido establecer un límite de Memoria RAM que puede consumir una instancia de SQL server, debemos proceder a realizar la configuración en el procedimiento almacenado sp_configure, en este pudiendo establecer el valor de las propiedades min server memory y max server memory, esta es una configuración avanzada, por lo que se debe habilitar previamente la configuración show advanced options, Estas configuraciones pueden realizarse sin reiniciar la instancia de SQL Server.
Ejemplo típico donde se acostumbra a Limitar la Cantidad Máxima de Memoria RAM a MSSQL
Tenemos un servidor el cual compartimos con varios servicios entre ellos SQL Server, donde al mismo tiempo en MSSQL tenemos múltiples instancias, el cual limitamos para evitar que cada instancia intente consumir toda la memoria, así evitando una conflicto de recursos entre estas.
Instrucciones para Limitar la Cantidad Máxima de Memoria Ram a MSSQL
1.- Abrimos SQL Server Management Studio Express.
2.- Abrimos los procedimientos anidados de nuestra base de datos y verificamos que este el procedimiento llamado sp_configure (Toda Base de Datos contiene uno predeterminado)
3.- Ya que verificamos que exista el procedimiento procedemos a abrir una ventana para escribir las instrucciones (New Query)
4.- Escribimos las siguientes instrucciones
Donde MiDB es el nombre de nuestra base de datos.
USE MiDB;
GO EXEC sp_configure 'show advanced option', '1'; RECONFIGURE;
EXEC sp_configure;
Donde podemos ver los valores predeterminados.
5.- Procedemos a Limitar el Máximo de Memoria con las siguientes instrucciones.
Donde 1024 es el limite máximo en MB de consumo de RAM para nuestra base de datos MIDB
EXEC sp_configure 'max server memory (MB)', '1024'; GO RECONFIGURE WITH OVERRIDE; GO
6.- Revisamos que los cambios se realicen con la siguiente instrucción.
EXEC sp_configure;
7.- Si el campo config_value y run_value de ‘max server memory (MB)’ son correctos, procedemos a ocultar la configuración avanzada si lo deseamos.
EXEC sp_configure 'show advanced options', '0'; GO
8.- Fin del procedimiento