Configuração máxima de memória no SQL Server

11

Estou executando o SQL Server 2008 e um aplicativo baseado na Web, em um único servidor dedicado, com apenas 2 GB de memória disponível.

Como observado em outro lugar, o SQL Server ocupa regularmente 98% da memória física, o que parece desacelerar o aplicativo Web em execução no servidor.

Em Propriedades do servidor no SSMS, em Memória, a Memória máxima do servidor (em Mb) é definida como: 2147483647 Servidor SQL

Minha pergunta é: qual seria o número recomendado para colocar na caixa de memória máxima do servidor, dada a quantidade de memória disponível, e que o mesmo servidor também esteja executando o aplicativo Web?

Além disso, é seguro alterar esse número enquanto o SQL Server está em execução?

Obrigado pelo seu conselho.

Esteira
fonte
2
Um artigo recente que escrevi sobre confirmação de memória excessiva em servidores SQL pode ser útil para você ler.
Jon Seigel 05/05

Respostas:

13

Responderei primeiro à última pergunta: Sim, você pode alterá-la enquanto o servidor estiver sendo executado sem problemas. Se você deseja alterar o valor via SQL, pode fazê-lo com a seguinte consulta

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO

Consulte esta página para obter mais detalhes sobre a configuração de memória no servidor SQL.


Sua primeira pergunta, infelizmente, a resposta é: não posso lhe dizer, não estou lá.

Existem 1.000.000 de coisas que você precisa levar em consideração ao alocar memória. Qual o tamanho dos conjuntos de resultados das consultas, com que frequência eles são executados? Uma consulta que costumava levar 20 ms seria aceitável para agora levar 200 ms?

Os padrões do Sql pressupõem que é a única coisa em execução no servidor, portanto, apenas define a memória para MAX_VALUE e para de crescer quando toda a memória disponível está em uso (e em hardware dedicado bastante próximo do que você deseja que aconteça (consulte Aarons comenta uma possível ressalva)). Normalmente, qualquer servidor da Web ou outro software que interaja com o banco de dados estaria em um hardware diferente, comunicando-se pela rede.

Você realmente só precisa configurá-lo para um valor que julgue ser sensato e, se o servidor da web ainda estiver com a memória bloqueada, abaixe-o. Se o SQL não estiver fornecendo desempenho suficiente depois de fornecer ao servidor da Web a memória necessária, você precisará comprar mais memória RAM ou mover o SQL para hardware dedicado.

Scott Chamberlain
fonte
2
Não é bom relatório no SSMS cerca de memória do servidor SQL: blogs.msdn.com/b/buckwoody/archive/2007/10/17/... Você pode acompanhar qual parte come mais memória
DiGi
1

Você nunca deve permitir que o servidor sql leve toda a memória da caixa .. Depende do que está sendo executado nessa caixa e da quantidade de memória que a caixa possui, mas sempre asseguro que deixo 10% da memória para o O \ S.

Trish Walker
fonte
0

Na minha empresa atual onde sou contratado, sempre uso as configurações mínimas e máximas para o SQL Server. O máximo, se o servidor estiver sendo usado apenas para o SQL Server, sempre defino na memória MAX - 1 GB para o SO. O mínimo no nosso caso em 2GB's.

Mas isso é comprovado para nossas instalações. Nem toda instalação e uso são iguais, e ainda sinto que a memória nem sempre está fazendo o que você deseja;)

Pode ser uma coisa conhecida no seu caso, mas também observe a troca de memória. Quando você tem apenas 2 GB no servidor e o SO e o SQL Server em execução com uma "carga alta", o consumo de memória fica muito alto, onde o SO tenderá a fazer algumas trocas. Verifique se os arquivos de paginação não estão na unidade do SO, ou então você pode acabar com um sistema totalmente atolado (que já existia antes e não gostou)

Mark Kremers
fonte
-1

Acabei de alterar "max server memory" no servidor ao vivo sem problemas. Parece que é definido como 2147483647 por padrão em todos os bancos de dados (mas não sei como ler o valor do SQL antes da alteração) ...

Cortisol Addiced
fonte
-2

Atenha-se aos padrões em 99% dos casos. Isso permitirá gerenciamento dinâmico de memória.

SirSpammedALot
fonte