Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Use as duas opções de memória do servidor, memória mínima do servidor e memória máxima do servidor, para reconfigurar a quantidade de memória (em megabytes) gerenciada pelo SQL Server Memory Manager para um processo do SQL Server usado por uma instância do SQL Server.
A configuração padrão para memória mínima do servidor é 0 e a configuração padrão para memória máxima do servidor é 2147483647 MB. Por padrão, o SQL Server pode alterar seus requisitos de memória dinamicamente com base nos recursos disponíveis do sistema.
Observação
Definir a memória máxima do servidor com o valor mínimo pode reduzir severamente o desempenho do SQL Server e até mesmo impedi-la de iniciar. Se você não puder iniciar o SQL Server depois de alterar essa opção, inicie-a usando a opção de inicialização -f e redefina a memória máxima do servidor para seu valor anterior. Para obter mais informações, consulte Opções de inicialização do serviço Mecanismo de Banco de Dados.
Quando o SQL Server está usando a memória dinamicamente, ele consulta o sistema periodicamente para determinar a quantidade de memória livre. Manter essa memória livre evita que o sistema operacional (SO) faça paginação. Se menos memória for gratuita, o SQL Server liberará memória para o sistema operacional. Se mais memória for gratuita, o SQL Server poderá alocar mais memória. O SQL Server adiciona memória somente quando sua carga de trabalho requer mais memória; um servidor em repouso não aumenta o tamanho de seu espaço de endereço virtual.
Veja o exemplo B para obter uma consulta para retornar a memória usada no momento. max server memory controla a distribuição de memória do SQL Server, incluindo o buffer pool, a memória de compilação, todos os caches, concessões de memória qe, a memória do gerenciador de bloqueios e a memória clr (essencialmente qualquer registro de memória encontrado em sys.dm_os_memory_clerks). A memória para pilhas de thread, heaps de memória, provedores de servidores vinculados diferentes do SQL Server e qualquer memória alocada por uma DLL que não seja do SQL Server não é controlada pela memória máxima do servidor.
O SQL Server usa a API de notificação de memória QueryMemoryResourceNotification para determinar quando o GERENCIADOr de Memória do SQL Server pode alocar memória e liberar memória.
É recomendável permitir que o SQL Server use a memória dinamicamente; no entanto, você pode definir as opções de memória manualmente e restringir a quantidade de memória que o SQL Server pode acessar. Antes de definir a quantidade de memória para o SQL Server, determine a configuração de memória apropriada subtraindo, da memória física total, a memória necessária para o sistema operacional e quaisquer outras instâncias do SQL Server (e outros usos do sistema, se o computador não estiver totalmente dedicado ao SQL Server). Essa diferença é a quantidade máxima de memória que você pode atribuir ao SQL Server.
Definindo manualmente as opções de memória
As opções de servidor min memória do servidor e memória máxima do servidor podem ser definidas para abranger um intervalo de valores de memória. Esse método é útil para administradores de sistema ou banco de dados configurarem uma instância do SQL Server em conjunto com os requisitos de memória de outros aplicativos ou outras instâncias do SQL Server que são executadas no mesmo host.
Observação
As opções de memória mínima do servidor e memória máxima do servidor são opções avançadas. Se você estiver usando o procedimento armazenado do sistema sp_configure para alterar essas configurações, poderá alterá-las somente quando mostrar que as opções avançadas estão definidas como 1. Essas configurações entram em vigor imediatamente sem a reinicialização do servidor.
Use min_server_memory para garantir uma quantidade mínima de memória disponível para o SQL Server Memory Manager para uma instância do SQL Server. O SQL Server não alocará imediatamente a quantidade de memória especificada na memória mínima do servidor na inicialização. No entanto, depois que o uso de memória atingir esse valor devido à carga do cliente, o SQL Server não poderá liberar memória, a menos que o valor da memória mínima do servidor seja reduzido. Por exemplo, quando várias instâncias do SQL Server puderem existir simultaneamente no mesmo host, defina o parâmetro min_server_memory em vez de max_server_memory com a finalidade de reservar memória para uma instância. Além disso, a definição de um valor min_server_memory é essencial em um ambiente virtualizado para garantir que a pressão de memória do host subjacente não tente desalocar a memória do pool de buffers em uma VM (máquina virtual) do SQL Server convidado além do necessário para o desempenho aceitável.
Observação
O SQL Server não tem garantia de alocar a quantidade de memória especificada na memória mínima do servidor. Se a carga no servidor nunca exigir a alocação da quantidade de memória especificada na memória mínima do servidor, o SQL Server será executado com menos memória.
Use max_server_memory para garantir que o sistema operacional não tenha pressão de memória prejudicial. Para definir a configuração máxima de memória do servidor, monitore o consumo geral do processo do SQL Server para determinar os requisitos de memória. Para ser mais preciso com esses cálculos para uma única instância:
- Da memória total do sistema operacional, reserve 1 GB a 4 GB para o sistema operacional em si.
- Em seguida, subtraia o equivalente de possíveis alocações de memória do SQL Server fora do controle de máximo de memória do servidor, que é composto pelo tamanho da pilha 1 * máximo de threads de trabalho calculado 2 + parâmetro de inicialização -g 3 (ou 256MB por padrão, se -g não estiver definido). O que resta deve ser a configuração de max_server_memory para uma configuração de instância única.
1 Consulte o Guia de arquitetura de gerenciamento de memória para obter informações sobre os tamanhos de pilha de thread por arquitetura.
2 Consulte a página de documentação sobre como configurar a opção de configuração de servidor máximo de threads de trabalho, para obter informações sobre os threads de trabalho padrão calculados para um determinado número de CPUs afinidades no host atual.
3 Consulte a página de documentação na página de opções de inicialização do serviço do mecanismo de banco de dados para mais informações sobre o parâmetro de inicialização -g. Aplicavel somente ao SQL Server de 32 bits (SQL Server 2005 até SQL Server 2014).
| Tipo de sistema operacional | Quantidades mínimas de memória permitidos para memória máxima do servidor |
|---|---|
| 32 bits | 64 MB |
| 64 bits | 128 MB |
Como configurar opções de memória usando o SQL Server Management Studio
Use as duas opções de memória do servidor, memória mínima do servidor e memória máxima do servidor, para reconfigurar a quantidade de memória (em megabytes) gerenciada pelo SQL Server Memory Manager para uma instância do SQL Server. Por padrão, o SQL Server pode alterar seus requisitos de memória dinamicamente com base nos recursos disponíveis do sistema.
Procedimento para configurar uma quantidade fixa de memória
Para definir uma quantidade fixa de memória:
No Pesquisador de Objetos, clique com o botão direito do mouse em um servidor e selecione Propriedades.
Clique no nó Memória .
Em Opções de Memória do Servidor, insira a quantidade desejada para memória mínima do servidor e memória máxima do servidor.
Use as configurações padrão para permitir que o SQL Server altere seus requisitos de memória dinamicamente com base nos recursos do sistema disponíveis. A configuração padrão para memória mínima do servidor é 0 e a configuração padrão para memória máxima do servidor é 2147483647 megabytes (MB).
Maximizar a taxa de transferência de dados para aplicativos de rede
Para otimizar o uso de memória do sistema para o SQL Server, você deve limitar a quantidade de memória usada pelo sistema para cache de arquivos. Para limitar o cache do sistema de arquivos, verifique se a taxa de transferência de dados maximizada para o compartilhamento de arquivos não está selecionada. Você pode especificar o menor cache do sistema de arquivos selecionando Minimizar a memória usada ou Balancear.
Para verificar a configuração atual em seu sistema operacional
Clique em Iniciar, clique em Painel de Controle, clique duas vezes em Conexões de Rede e clique duas vezes em Conexão de Área Local.
Na guia Geral , clique em Propriedades, selecione Arquivo e Compartilhamento de Impressoras Microsoft Networks e clique em Propriedades.
Se Maximizar a taxa de transferência de dados para aplicativos de rede estiver selecionada, escolha qualquer outra opção, clique em OK e feche o restante das caixas de diálogo.
Bloquear páginas na memória
Essa política do Windows determina quais contas podem usar um processo para manter dados na memória física, impedindo o sistema de paginar os dados para a memória virtual em disco. Bloquear páginas na memória pode manter o servidor responsivo ao fazer paginação da memória para o disco. A opção Bloquear Páginas na Memória do SQL Server está ativada em instâncias de 32 bits e 64 bits da Edição Standard do SQL Server 2014 e superior quando a conta com privilégios para executar sqlservr.exe recebeu o direito de usuário "Páginas Bloqueadas na Memória" (LPIM) do Windows. Nas versões anteriores do SQL Server, definir a opção Bloquear Páginas para uma instância de 32 bits do SQL Server requer que a conta com privilégios para executar sqlservr.exe tenha o direito de usuário LPIM e que a opção de configuração 'awe_enabled' esteja definida como ON.
Para desabilitar a opção Bloquear Páginas na Memória do SQL Server, remova o direito de usuário "Páginas Bloqueadas na Memória" para a conta de inicialização do SQL Server.
Para desabilitar páginas de bloqueio na memória
Para desativar a opção "Travar Páginas na Memória":
No menu Iniciar , clique em Executar. Na caixa Abrir, digite
gpedit.msc.A caixa de diálogo Política de Grupo é aberta.
No console de Política de Grupo , expanda a Configuração do Computador e expanda as Configurações do Windows.
Expanda as Configurações de Segurança e expanda As Políticas Locais.
Selecione a pasta Atribuição de direitos de usuários .
As políticas serão exibidas no painel de detalhes.
No painel, clique duas vezes em Bloquear páginas na memória.
Na caixa de diálogo Configuração da Política de Segurança Local , selecione a conta com privilégios para executar sqlservr.exe e clique em Remover.
Gerenciador de Memória Virtual
Os sistemas operacionais de 32 bits fornecem acesso a 4 GB de espaço de endereço virtual. 2 GB de memória virtual é privada por processo e está disponível para uso de aplicativos. 2 GB são reservados para uso do sistema operacional. Todas as edições do sistema operacional incluem um comutador que pode fornecer aos aplicativos acesso a até 3 GB de espaço de endereço virtual, limitando o sistema operacional a 1 GB. Para obter mais informações sobre como usar a configuração de memória de comutador, consulte a documentação do Windows sobre o ajuste de 4 gigabytes (4GT). Quando o SQL Server de 32 bits está em execução no sistema operacional de 64 bits, seu espaço de endereço virtual disponível pelo usuário é de 4 GB completo.
As regiões confirmadas do espaço de endereço são mapeadas para a memória física disponível pelo VMM (Gerenciador de Memória Virtual do Windows).
Para obter mais informações sobre a quantidade de memória física compatível com sistemas operacionais diferentes, consulte a documentação do Windows "Limites de memória para versões do Windows".
Os sistemas de memória virtual permitem o comprometimento excessivo da memória física, de modo que a relação de memória virtual para física possa exceder 1:1. Como resultado, programas maiores podem ser executados em computadores com uma variedade de configurações de memória física. No entanto, usar significativamente mais memória virtual do que os conjuntos de trabalho médios combinados de todos os processos pode causar um desempenho ruim.
As opções de memória mínima do servidor e memória máxima do servidor são opções avançadas. Se você estiver usando o procedimento armazenado do sistema sp_configure para alterar essas configurações, poderá alterá-las somente quando mostrar que as opções avançadas estão definidas como 1. Essas configurações entram em vigor imediatamente sem a reinicialização do servidor.
Executando várias instâncias do SQL Server
Ao executar várias instâncias do Mecanismo de Banco de Dados, há três abordagens que você pode usar para gerenciar a memória:
Use a memória máxima do servidor para controlar o uso de memória. Estabeleça as configurações máximas para cada instância, tendo cuidado para que a alocação total não seja maior do que a memória RAM total em seu computador. É recomendável que cada instância de memória seja proporcional à sua carga de trabalho ou tamanho de banco de dados esperado. Esse método tem a vantagem de que, quando novos processos ou instância forem iniciados, a memória livre estará disponível para eles imediatamente. A desvantagem é que, se você não estiver executando todas as instâncias, nenhuma das instâncias em execução poderá utilizar a memória livre restante.
Use memória mínima do servidor para controlar o uso de memória. Estabeleça configurações mínimas para cada instância, de modo que a soma desses mínimos seja de 1 a 2 GB menor que a memória física total em seu computador. Novamente, você pode estabelecer esses mínimos proporcionalmente à carga esperada dessa instância. Esse método tem a vantagem de que, se nem todas as instâncias estiverem sendo executadas ao mesmo tempo, as que estiverem sendo executadas poderão usar a memória livre restante. Essa abordagem também é útil quando há outro processo com uso intensivo de memória no computador, pois garantiria que o SQL Server pelo menos obteria uma quantidade razoável de memória. A desvantagem é que, quando uma nova instância (ou qualquer outro processo) é iniciada, pode levar algum tempo para que as instâncias em execução liberem memória, especialmente se precisarem gravar páginas modificadas de volta em seus bancos de dados para fazê-lo.
Não fazer nada (não recomendado). As primeiras instâncias configuradas com uma carga de trabalho tendem a usar toda a memória disponível. Instâncias ociosas ou instâncias iniciadas posteriormente podem acabar em execução com apenas uma quantidade mínima de memória disponível. SQL Server não tenta equilibrar o uso de memória em instâncias. No entanto, todas as instâncias responderão aos sinais de Notificação de Memória do Windows para ajustar o tamanho de sua superfície de memória. O Windows não equilibra a memória entre aplicativos com a API de Notificação de Memória. Ele simplesmente fornece um feedback global da disponibilidade da memória no sistema.
É possível alterar essas configurações sem reinicializar as instâncias, para que você possa testar facilmente para encontrar as melhores configurações para seu padrão de uso.
Fornecendo a quantidade máxima de memória para o SQL Server
| 32 bits | 64 bits | |
|---|---|---|
| Memória convencional | Até o limite de espaço de endereçamento virtual em todas as edições do SQL Server. 2 GB 3 GB com /3gb parâmetro de inicialização* 4 GB em WOW64** |
Até o limite de espaço de endereçamento virtual em todas as edições do SQL Server: 8 TB na arquitetura x64 |
* /3gb é um parâmetro de inicialização do sistema operacional. Para obter mais informações, visite a Biblioteca MSDN.
**WOW64 (Windows no Windows 64) é um modo no qual o SQL Server de 32 bits é executado em um sistema operacional de 64 bits. Para obter mais informações, visite a Biblioteca MSDN.
Exemplos
Exemplo A
O exemplo a seguir define a opção max server memory como 4 GB:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO
Exemplo B. Determinando a alocação de memória atual
A instrução a seguir retorna informações sobre a memória alocada atualmente.
SELECT
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;
Consulte Também
Monitorar e ajustar para de desempenho
RECONFIGURAR (Transact-SQL)
Opções de configuração do servidor (SQL Server)
sp_configure (Transact-SQL)