Opções de memória do servidor

Use as duas opções de memória de servidor, min server memory e max server memory, para reconfigurar a quantidade de memória (em megabytes) no pool de buffers usado por uma instância do MicrosoftSQL Server.

Por padrão, o SQL Server pode alterar seus requisitos de memória dinamicamente com base em recursos do sistema disponíveis. A configuração padrão para min server memory é 0 e a configuração padrão para max server memory é 2147483647. A quantidade mínima de memória que você pode especificar para max server memory é 16 megabytes (MB).

ObservaçãoObservação

Configurar max server memor com o valor mínimo pode reduzir drasticamente o desempenho do SQL Server e até mesmo impedir sua inicialização. Se você não puder iniciar o SQL Server depois de alterar essa opção, inicie usando a opção de inicialização –f e redefina max server memory ao seu valor anterior. Para obter mais informações, consulte Usando as opções de inicialização do serviço do SQL Server.

Quando o SQL Server está usando a memória dinamicamente, ele examina o sistema periodicamente para determinar a quantidade de memória física livre. No MicrosoftWindows 2000, o SQL Server aumenta ou diminui o cache do buffer para manter a memória física entre 4 MB e 10 MB dependendo da atividade do servidor. Manter essa memória livre impede a paginação do Windows 2000. Se houver menos memória livre, o SQL Server libera memória para Windows 2000. Se houver mais memória livre, o SQL Server aloca memória para o pool de buffer.O SQL Server adiciona memória ao pool de buffer apenas quando sua carga de trabalha exige mais memória; um servidor em repouso não aumenta o tamanho de seu pool de buffer.

No Windows Server 2003, o SQL Server usa a notificação de memória API QueryMemoryResourceNotification para determinar quando o pool de buffer pode alocar e liberar memória.

Permitir que o SQL Server use memória dinamicamente é recomendado, porém, 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 Windows 2000 ou Windows Server 2003 e qualquer outra instância do SQL Server (e outros usos de sistema, se o computador não for dedicado completamente ao SQL Server). Essa diferença é a quantidade máxima de memória que você pode atribuir ao SQL Server.

Configurando opções de memória manualmente

Há dois métodos principais para configurar opções de memória do SQL Server manualmente:

  • No primeiro método, defina min server memory e max server memory com o mesmo valor. Esse valor corresponde à quantidade fixa de memória a ser alocada ao pool de buffer do SQL Server depois que o valor for alcançado.

  • No segundo método, defina min server memory e max server memory de modo a ultrapassar um intervalo de valores de memória. Esse método é útil quando os administradores de sistema ou de banco de dados querem configurar uma instância do SQL Server com os requisitos de memória de outros aplicativos executados no mesmo computador.

Use min server memory para garantir uma quantidade mínima de memória disponível para o pool de buffer de uma instância do SQL Server. O SQL Server não alocará imediatamente a quantidade de memória especificada em min server memory na inicialização. Porém, depois que o uso de memória alcançar esse valor devido à carga do cliente, o SQL Server não pode liberar memória do pool de buffer a menos que o valor de min server memory seja reduzido.

ObservaçãoObservação

Não há garantia de que o SQL Server aloque a quantidade de memória especificada em min server memory. Se a carga no servidor nunca exigir a alocação da quantidade de memória especificada em min server memory, o SQL Server será executado com menos memória.

Use max server memory para impedir que o pool de buffer do SQL Server use mais do que a quantidade de memória especificada, deixando a memória restante disponível para iniciar outros aplicativos rapidamente. O SQL Server não aloca imediatamente a memória especificada em max server memory na inicialização. O uso de memória aumenta conforme necessário pelo SQL Server até atingir o valor especificado em memória máxima do servidor. O SQL Server não pode exceder esse uso de memória a não ser que o valor de memória máxima do servidor seja aumentado.

Antes de reduzir o valor max server memory, use o Monitor de Desempenho para examinar o objeto de desempenho SQLServer:Buffer Administrador sob carga e observe os valores atuais dos contadores Páginas roubadas e Páginas reservadas. Esses contadores informam a memória como o número páginas 8K. max server memory deve ser definido acima da soma desses dois valores para evitar erros de falta de memória. Um valor aproximado da menor configuração razoável de max server memory (em MB) é ([Páginas roubadas] + [Páginas reservadas])/ 100. Para reduzir max server memory você pode precisar reiniciar o SQL Server para liberar a memória. Para obter informações sobre como definir opções de memória, consulte Como definir uma quantidade fixa de memória (SQL Server Management Studio).

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, limite a quantidade de memória que é usada pelo sistema para cache de arquivo. Para limitar o cache do sistema de arquivos, verifique se a opção Maximizar taxa de transferência de dados para compartilhamento de arquivos não está selecionada. Você pode especificar o menor cache do sistema de arquivos selecionando Minimizar a memória usada ou Equilíbrio.

Para verificar a configuração atual em seu sistema operacional

  1. Clique em Iniciar, em seguida, em Painel de Controle, clique duas vezes em Conexões de Rede e duas vezes em Conexão de Área Local.

  2. Na guia Geral clique em Propriedades, selecione Redes Microsoft de Compartilhamento de Arquivos e Impressoras, e clique em Propriedades.

  3. Se Maximizar Transferência de Dado para Aplicações em Rede, for selecionada, escolha qualquer outra opção, clique em OK e feche o restante das caixas de diálogo.

Memória AWE no Windows Server 2003

No Windows Server 2003, SQL Server pode ser usada a memória AWE (Address Windowing Extensions) para assistência adicional no balanceamento de carga de seus próprios requisitos de memória com os do sistema operacional. Esse balanceamento entre o SQL Server e o sistema operacional está sujeito às restrições das opções min server memory e max server memory. Se o hardware de servidor oferecer suporte a Inclusão de Memória a Quente, memória física adicional poderá ser adicionada ao servidor conforme necessário sem exigir uma reinicialização. Para obter mais informações sobre a opção de configuração awe enabled, consulte Opção awe enabled. Para obter mais informações, consulte Inclusão de Memória a Quente.

ObservaçãoObservação

No Windows Server 2003, a memória AWE dinâmica tem suporte em servidores com menos memória física do que o limite de memória virtual configurado. O Windows 2000 exige que a memória física disponível exceda a memória virtual para habilitar memória AWE.

De modo ideal, aloque tanta memória quanto possível ao SQL Server sem fazer com que o sistema troque páginas com o disco. O limite varia dependendo de seu sistema. Por exemplo, em um sistema de 32 gigabytes (GB) dedicado exclusivamente ao SQL Server, 30 a 31 GB pode ser um limite máximo apropriado para o SQL Server; em um sistema de 64 GB, 60 a 62 GB pode ser um limite apropriado.

ObservaçãoObservação

Conforme você aumenta a quantidade de memória do SQL Server, assegura que haja espaço em disco suficiente para expandir o arquivo de suporte de memória virtual (Pagefile.sys) do sistema operacional para acomodar a memória adicional. Para obter mais informações sobre o arquivo de suporte de memória virtual, consulte Windows 2000 ou a documentação Windows Server 2003.

Use as estatísticas do Windows System Monitor para ajudar a ajustar o valor da memória se necessário. Altere este valor somente quando você adicionar ou remover memória ou quando alterar como o sistema é usado.

Gerenciador de memória virtual

Os sistemas operacionais de 32 bits como Windows 2000 e Windows Server 2003 fornecem acesso a 4 gigabytes (GB) de espaço de endereço virtual. Os 2 GB inferiores da memória virtual são privativos por processo e estão disponíveis para uso da aplicação. O 2 GB superiores estão reservados para uso do sistema operacional. Todas as edições de sistema operacional, começando com o MicrosoftWindows XP Professional e posteriores, incluindo Windows Server 2003, têm uma opção boot.ini que oferece aos aplicativos acesso a 3 GB de memória virtual, limitando o sistema operacional a 1 GB. Para obter mais informações sobre como usar a configuração de opção de memória /3GB, consulte a documentação do Windows.

ObservaçãoObservação

No Windows Server 2003, o PAE será habilitado automaticamente apenas se o servidor estiver usando dispositivos de inclusão de memória a quente. Nesse caso, você não precisa usar a opção /PAE em um sistema configurado para usar dispositivos de inclusão de memória a quente. Em todos os demais casos, você deverá usar a opção /PAE no arquivo Boot.ini para se beneficiar da memória de mais de 4 GB.

O espaço de endereço de 4 GB é mapeado para a memória física disponível pelo VMM (Gerenciador de Memória Virtual) do Windows. A quantidade de memória física com suporte aumentou com a introdução dos sistemas operacionais Windows Server 2003. A memória física acessível por AWE, portanto, depende de qual sistema operacional você está usando:

  • Windows Server 2003, Standard Edition oferece suporte à memória física de até 4 GB.

  • Windows Server 2003, Enterprise Edition oferece suporte à memória física de até 32 GB.

  • Windows Server 2003, Datacenter Edition oferece suporte à memória física de até 64 GB.

Um aplicativo Win32 como o SQL Server percebe apenas endereços virtuais ou lógicos, não endereços físicos. Quanta memória física um aplicativo usa em um determinado momento (o conjunto de trabalho) é determinada pela memória física disponível e pelo VMM. O aplicativo não pode controlar a residência de memória diretamente.

O Windows 2000 Advanced Server e o Windows 2000 Datacenter Server, bem como Windows Server 2003, Enterprise Server e Windows Server 2003, Datacenter Server de 32 bits têm a capacidade para exceder o limite de 4 GB com o uso do Intel PAE (Physical Addressing Extensions). O uso da opção /PAE no arquivo de configuração boot.ini do Windows fornece acesso à memória física acima do limite de 4 GB. Este é um requisito para o acesso à memória AWE acima de 4 GB. Para obter mais informações sobre como usar essa configuração de memória para Windows 2000 e Windows Server 2003, consulte a documentação do Windows.

Os sistemas de endereço virtual, como Windows 2000 ou Windows Server 2003 permitem exceder o uso da memória física, de modo que a taxa entre memória física e virtual pode exceder 1:1. Como resultado, programas maiores podem ser executados em computadores com várias configurações de memória física. No entanto, usar significativamente mais memória virtual do que a média combinada de conjuntos de trabalho de todos os processos pode provocar desempenho inadequado.

As opções 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 no sistema sp_configure para alterar essas configurações, só será possível alterá-las quando show advanced options estiver definida como 1. Essas configurações entram em vigor imediatamente sem a reinicialização do servidor.

Executando várias instâncias do SQL Server

Quando você estiver executando várias instâncias do Mecanismo de Banco de Dados, há três métodos que você pode usar para gerenciar a memória:

  • Use max server memory para controlar o uso de memória. Defina configurações máximas para cada instância, tomando cuidado para que a permissão total não seja maior que a memória física total de sua máquina. É 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 sendo executadas poderá utilizar a memória livre restante.

  • Use min server memory para controlar o uso de memória. Defina as configurações mínimas de cada instância, de forma que a soma desses mínimos seja entre 1 a 2 GB menor do que a memória física total de sua máquina. Novamente, você pode definir esses mínimos proporcionalmente à carga esperada para a 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. Esse método também é útil quando há outro processo de uso intensivo da memória no computador, de forma que será assegurado que SQL Server tenha pelo menos uma quantidade razoável de memória. A desvantagem é que quando uma nova instância (ou qualquer outro processo) for iniciada, pode levar algum tempo para que as instâncias liberem memória, especialmente se for necessário gravar páginas modificadas de volta na memória para fazer isso. Você também pode precisar aumentar o tamanho de seu arquivo de paginação significativamente.

  • Não fazer nada (não recomendado). As primeiras instâncias apresentadas com uma carga de trabalho tenderão a alocar toda a memória. Instâncias inativas ou instâncias iniciadas posteriormente poderão acabar com apenas uma quantidade mínima de memória disponível. OSQL Server não tenta balancear o uso da memória ao longo das instâncias. Entretanto, todas as instâncias responderão aos sinais de notificação de memória do Windows para ajustar o tamanho de seus pools de buffer. Desde o Windows Server 2003 SP1, o Windows não balanceia a memória dos aplicativos com a notificação de memória API. Ele simplesmente fornece um feedback global da disponibilidade da memória no sistema.

Você pode alterar essas configurações sem reinicializar as instâncias, assim você pode facilmente tentar encontrar as melhores configurações para seu padrão de uso.

Exemplos

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