Com base nessa página msdn: configurações de memória do servidor , é uma boa prática manter os valores padrão para memória mínima e máxima do SQL-Servers para mantê-lo dinâmico ...
Pelo que aprendi através de tutoriais, você deve sempre definir um valor máximo, sobre o mínimo que não ouvi muito. Estou monitorando meu arquivo de paginação usando perfmon antigo e simples e percebi que raramente a troca de disco está acontecendo e uma vez quase causou uma falha no servidor.
Isso pode estar relacionado a ter a configuração de memória máxima padrão no SQL Server? Os bancos de dados têm cerca de 150 GB e a memória é de 48 GB, não há nenhum outro aplicativo em execução nessa máquina.
Além disso, por que você deveria ter um valor mínimo? Eu sei que um valor muito baixo pode impedir a inicialização do SQL-Server e sei que o SQL-Server mantém coisas na memória, então não tente liberar seu cache.
Estou usando o SQL-Server 2012, desde já agradeço!
Alguns detalhes para esclarecer as coisas
Não, não está escrito, é um
good practice
que diz que érecommended
e tenho certeza de que os livros on-line da MS não podem escrevê-lo tão bem, isso ocorre porque o ambiente varia e o que é bom para um ambiente pode não ser adequado para outro. É principalmente bom ter restrição a algo que é muito consumido, embora seja gerenciado com eficiência. Considero uma boa prática definir a memória máxima do servidor no sistema porque isso restringirá o pool de buffer e informará ao SQL Server quanto máximo um pool de buffer pode crescer, embora o SQL Server possa consumir memória fora da configuração de pool de buffer/memória máxima do servidor se usar muito Terceiro procs armazenados estendidos da DLL de terceiros e servidores vinculados.O arquivo de paginação é usado pelo Windows para armazenar dados temporários que são trocados dentro e fora da memória física para fornecer um conjunto de memória virtual maior. O arquivo de paginação depende em grande parte de quanta memória o sistema operacional está comprometendo e muda de acordo com o valor mínimo e máximo definido. se você deseja monitorar o arquivo de paginação, deve confiar nos contadores perfmon. Por favor, leia este blog do MSDN
Memory: Committed Bytes --Número de bytes de memória virtual que foram confirmados. Isso não representa necessariamente o uso do arquivo de paginação - representa a quantidade de espaço do arquivo de paginação que seria usado se o processo se tornasse completamente não residente
Memory: Commit Limit -- Número de bytes de memória virtual que podem ser confirmados sem a necessidade de estender os arquivos de paginação.
Arquivo de paginação: % de uso -- Porcentagem do arquivo de paginação confirmado
Arquivo de paginação: % de pico de uso -- Maior porcentagem do arquivo de paginação confirmado
A memória mínima do servidor é a quantidade mínima de memória disponível para o SQL Server Memory Manager para uma instância do SQL Server. Isso entra em cena ativa quando o Windows está enfrentando pressão de memória; nesse caso, ele aumentará o sinalizador de notificação de memória baixa. O SQLOS responderá a ele, solicitará ao SQL Server para cortar seu consumo de memória e liberar seu cache, então o SQL Server não reduzirá preventivamente até seu valor mínimo de memória do servidor. Se a pressão for muito alta, o SQL Server pode não ser capaz de reagir rapidamente e, em seguida, o processo do SQL Server será paginado. Lembre-se de que a memória mínima do servidor não diz que, quando o SQL Server for iniciado, ele ocuparia no mínimo essa quantidade de memória, se não for necessária, o SQL Server iniciará consumindo muito menos do que a memória mínima do servidor.
Outro uso da memória mínima do servidor é se você não deseja que o SQL Server seja paginado para o disco devido a algum sistema operacional/driver de terceiros com comportamento inadequado. Você define o servidor máximo e a memória mínima do servidor para quase o mesmo valor e dá à conta de serviço do SQL Server Páginas bloqueadas no privilégio de memória e, neste caso, mesmo se o sistema operacional enfrentar uma crise de memória, o SQL Server reduziria o máximo para o servidor mínimo e se a crise de memória do sistema operacional ainda estiver lá O processo do sistema operacional seria paginado e se tornaria extremamente lento. Mas isso é uma coisa ruim de se fazer e eu não recomendaria
O valor MIN é útil quando você tem um servidor com várias instâncias. Você pode usá-lo para priorizar o uso de memória por instância. Mas principalmente é para garantir que o SQL tenha pelo menos essa quantidade de memória para trabalhar. Isso impede que as pessoas executem algo no servidor e roubem toda a memória.
A configuração padrão basicamente deixa a alocação de memória para o SQL Server, mas é uma prática recomendada definir um valor estático para que nunca haja um problema de o SQL retirar a memória de outros processos ou do sistema operacional. Isso é obrigatório se você estiver executando SSIS, SSAS, SSRS ou qualquer outro serviço/aplicativo no mesmo servidor. Portanto, sua configuração precisa deixar memória suficiente para os serviços + aplicativos + SO em execução no servidor.