Temos um conjunto de instâncias do SQL Server (2008 R2) que são executadas no mesmo servidor virtual. Cada instância representa um estágio em nosso ciclo de desenvolvimento (Dev / Test / Stage / etc.). Todas as instâncias precisam estar online a qualquer momento, mas o carregamento tende a ser isolado para uma instância por vez, dependendo de onde estamos no ciclo de vida do release.
O SQL Server parece pegar e reter qualquer quantidade de memória que definimos como o máximo. O que eu gostaria de saber se existe alguma maneira de configurar as instâncias para serem "inteligentes" sobre o consumo de memória, para que elas não impeçam a obtenção de memória quando necessário.
sql-server
sql-server-2008-r2
Phil Sandler
fonte
fonte
Respostas:
O SQL Server usará o máximo de memória possível (praticamente) e é sempre aconselhável definir um limite para cada instância. A configuração padrão é 2147483647MB.
Dependendo do uso e das circunstâncias específicas, as configurações podem variar, mas normalmente um bom ponto de partida é definir a memória máxima do servidor entre 75 e 90%, dependendo da quantidade de RAM que você possui. Glenn Berry compartilha uma boa indicação há alguns anos AQUI .
Se você possui várias instâncias ativas em um servidor, pode ser necessário compartilhar os recursos entre elas; por exemplo, se você possui 32 GB de RAM com 3 instâncias, deve atribuir cerca de 9500 MB a cada instância. Quando você estiver usando apenas uma instância de cada vez, as outras não liberarão a RAM que estão usando. Você pode liberar a RAM deles interrompendo o serviço.
Quando você tem outros aplicativos / serviços em execução, pode ser necessário ajustar a quantidade de memória para acomodá-los.
fonte