¿Cómo debo configurar la memoria para varias instancias de SQL Server?

9

Tenemos un conjunto de instancias de SQL Server (2008 R2) que se ejecutan en el mismo servidor virtual. Cada instancia representa una etapa en nuestro ciclo de desarrollo (Dev / Test / Stage / etc.). Todas las instancias deben estar en línea en un momento dado, pero la carga tiende a aislarse en una instancia a la vez, dependiendo de dónde nos encontremos en el ciclo de vida de la versión.

SQL Server parece capturar y retener cualquier cantidad de memoria que establezcamos como máximo. Lo que me gustaría saber si hay alguna forma de configurar las instancias para que sean "inteligentes" sobre el consumo de memoria para que no se bloqueen entre sí para obtener memoria cuando sea necesario.

Phil Sandler
fuente
Si todas las instancias necesitan estar en línea en cualquier momento, y configura la memoria máxima, SQL Server no la liberará. Cuando dice ... la carga está aislada en una instancia como una vez, ¿significa que no hay actividad en otras instancias? Además, ¿cuántas instancias está ejecutando en un virtual y cuál es la configuración de CPU / Memoria para el virtual?
Kin Shah
3
Escribí sobre esto para los clústeres de varias instancias, donde necesita ajustar la memoria en caso de una conmutación por error que conduzca a varias instancias en el mismo nodo . Podría usar un enfoque similar aquí, pero en su lugar ejecutar procedimientos almacenados a pedido que reconfiguran la memoria en función de la necesidad actual. No podrá configurar cada instancia para que haga esto automáticamente a menos que simplemente las fije en una memoria máxima de forma permanente (y luego la ajuste manualmente cuando sea necesario).
Aaron Bertrand

Respuestas:

7

SQL Server usará la mayor cantidad de memoria que pueda arrojarle (más o menos), y siempre es aconsejable establecer un límite en cada instancia. La configuración predeterminada es 2147483647MB.

Dependiendo de su uso y sus propias circunstancias únicas, su configuración puede variar, pero normalmente un buen punto de partida es establecer la memoria máxima del servidor entre 75 y 90 por ciento, dependiendo de la cantidad de RAM que tenga. Glenn Berry comparte una buena indicación hace unos años AQUÍ .

Si tiene varias instancias activas en un servidor, es posible que deba compartir los recursos entre ellas, por ejemplo, si tiene 32 GB de RAM con 3 instancias, debe asignar alrededor de 9500 MB a cada instancia. Cuando usa solo una instancia a la vez, las otras no liberarán la RAM que están usando. Puede liberar su RAM deteniendo el servicio.

Cuando tiene otras aplicaciones / servicios en ejecución, es posible que deba ajustarse la cantidad de memoria para acomodarlos.

RoKa
fuente