Saltear al contenido principal

¿Cómo configurar memoria en SQL Server?

Como en muchos servidores, el uso de la memoria RAM juega un papel muy importante en el rendimiento de nuestros sistemas. Más aún cuando hablamos de un Servidor de Base de Datos. Es por eso que en esta oportunidad quiero hablarte de las consideraciones más importantes para configurar memoria en SQL Server.

¿Para qué necesita memoria SQL Server?

Este es un excelente punto de partida para entender un poco la arquitectura de tu motor. Voy a resumirte la respuesta en dos puntos.

  • Buffer Pool
  • Execution Plan Cache

Uno de los principales objetivos de cualquier motor de base de datos es reducir la cantidad de I/O que se genera, justamento por el costo en recursos que los procesos requieren. Para eso es que SQL Server mantiene en memoria, en un Buffer Pool, las páginas leídas de una base de datos. Para que no tenga que realizar operaciones de I/O todo el tiempo y sea más fácil ir a memoria.

Ahora sí tiene sentido, ¿verdad?

Por eso es que podríamos decir que mientras más memoria tenga SQL Server, más páginas de datos pueden estar ahí reduciendo signficativamente el I/O en disco.

Por otro lado el Execution Plan Cache mantiene en un caché todas las compilaciones de los Planes de Ejecución que se generan con las consultas que realizas. Claro, esto con el fin de que no tengas que compilar todo el tiempo cada una de las consultas.

Va teniendo más sentido.

Entonces, ¿cómo configurar memoria en SQL Server?

Para todo lo que hemos visto hasta ahora, yo pienso que mientras más memoria tenga disponible un servidor, mejor. ¿No es cierto? Posiblemente esa es una de las razones por la que una instalación por defecto tiene asignado un máximo de memoria de 2147483647 MB.

configurar-memoria-en-sql-server
Propiedades de la instancia

Si hay algo que quiero que tengas muy claro es, que por el diseño de nuestro motor, tenemos un comportamiento muy importante.

Por defecto, SQL Server puede cambiar dinámicamente sus requerimientos de memoria basado en el recurso disponible del sistema

Microsoft Docs – Server memory configuration options

ATENCIÓN A ESTO ÚLTIMO. “…basado en el recurso disponible del sistema”

Esto quiere decir que SQL Server podría usar toda la memoria RAM que quiera mientras no lo limitemos. Y por lo expresado más arriba, yo considero que tiene total sentido.

¿Entonces qué hacemos ahora?

Si no colocas un límite al uso de memoria en el servidor, SQL Server tendrá la libertad en esa distribución dinámica.

¿Ya lo ves más claro?

Piensa en un servidor de Producción, ¿tienes solamente instalado SQL Server? he visto que muchas personas colocan Reporting Services, Integration Services u otros. Pero no te olvides que a veces los servidores también tienen instalados antivirus, sistemas de DLP (data loss prevention), sistemas de monitoreo, agentes de firewalls y tantas otras cosas.

Por eso es TAN IMPORTANTE que puedas limitar de una manera correcta el uso de memoria del motor de Base de Datos. Para que no se pelee por recursos con otros servicios o incluso con el propio sistema operativo.

Si tienes solamente instalado el motor de SQL Server y no otros servicios, te recomiendo puedas evaluar el rendimiento con una asignación entre el 80-90% del total de RAM en el servidor. Si tienes al menos medio Terabyte de memoria, podrías evaluar asignar un 95%. Guíate en el siguiente detalle.

Server Memory [GB] Server Memory [MB]Max Memory Setting
881926554
161638413926
323276827852
646553658982
128131072117965
264270336243302
512524288498074
10241048576996147

Finalmente, si alguna vez te lo preguntas, puedes ver ¿Es Posible liberar memoria en SQL Server?

Pablo Javier Fernández

www.datoptim.com
I love working on SQL Server Performance Tuning and finding the origin of the problems. Music and SQL Server passionate.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Close search

Carrito

Volver arriba