Limite a memória máxima do servidor para evitar pressão na memória - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Limite a memória máxima do servidor para evitar pressão na memória

Para fins de desempenho, o SQL Server não libera a memória que já tenha alocada. Quando o SQL Server é iniciado, ele usa lentamente a memória especificada na opção min_server_memory e continua a crescer até atingir o valor especificado na opção max_server_memory. (Para obter mais informações sobre essas configurações, consulte as Opções de configuração da memória do servidor na documentação do SQL Server.)

A memória do SQL Server tem dois componentes: o buffer pool e o non-buffer pool (também chamado de memória a sair ou MTL). O valor da opção max_server_memory determina o tamanho do buffer pool do SQL Server, que consiste em cache de buffer, cache de procedimento, cache de planos, estruturas de buff e outros caches.

A partir do SQL Server 2012, min_server_memory e max_server_memory respondem por todas as alocações de memória para todos os caches, incluindo SQLGENERAL, SQLBUFFERPOOL, SQLQUERYCOMPILE, SQLQUERYPLAN, SQLQUERYEXEC, SQLOPTIMIZER e SQLCLR. Para obter uma lista completa dos gerenciadores de memória no max_server_memory, consulte sys.dm_os_memory_clerks na documentação do Microsoft SQL Server.

Para verificar o valor atual da max_server_memory, use o comando:

$ sp_configure 'max_server_memory'

Recomendamos que você limite a max_server_memory a um valor que não cause pressão na memória em todo o sistema. Não há uma fórmula universal que se aplique a todos os ambientes, mas fornecemos algumas diretrizes nesta seção. max_server_memory é uma opção dinâmica e, portanto, pode ser alterada no tempo de execução.

Como ponto de partida, você pode determinar a max_server_memory da seguinte forma:

max_server_memory = total_RAM – (memory_for_the_OS + MTL)

onde:

  • A memória do sistema operacional é de 1 a 4 GB.

  • A MTL (memória para sair) inclui o tamanho da pilha, que é de 2 MB em máquinas de 64 bits por thread de trabalho e pode ser calculada da seguinte forma: MTL = stack_size * max_worker_threads

Você também pode usar:

max_server_memory = total_RAM – (1 GB for the OS + memory_basis_amount_of_RAM_on_the_server)

onde a quantidade básica de memória RAM é determinada da seguinte forma:

  • Se a RAM no servidor estiver entre 4 GB e 16 GB, deixe 1 GB a cada 4 GB de RAM. Por exemplo, para um servidor com 16 GB, deixe 4 GB.

  • Se a RAM no servidor for superior a 16 GB, deixe 1 GB a cada 4 GB de RAM até 16 GB, e 1 GB por 8 GB de RAM acima de 16 GB.

Por exemplo, se um servidor tiver 256 GB de RAM, o cálculo será:

  • 1 GB para o sistema operacional

  • Até 16 GB de RAM: 16/4 = 4 GB

  • RAM restante acima de 16 GB: (256-16)/8 = 30

  • Total de RAM a ser deixado: 1 + 4 + 30 = 35 GB

  • max_server_memory: 256 - 35 = 221 GB

Após a configuração inicial, monitore a memória que você pode liberar durante um período normal de workload para determinar se você precisa aumentar ou diminuir a memória alocada para o SQL Server.

nota

O Windows sinaliza a notificação de poucos recursos de memória aos 96 MB, então você quer um buffer, mas pode definir que os Mbytes disponíveis estejam acima de 1 GB em servidores maiores com 256 GB ou mais de RAM.

Para obter informações adicionais, consulte o Guia de Arquitetura de Gerenciamento de Memória na documentação do Microsoft SQL Server.