Otimizando o uso de Memória em Servidores de Banco de Dados
Veja como otimizar o uso de memória em servidores de banco de dados.
Otimizando o uso de Memória em Servidores de Banco de Dados
As Instalações do SQL Server estão se tornando cada vez maiores e mais complexas a cada nova versão. Como esses ambientes de banco de dados se tornam mais diferenciados, os administradores de banco de dados precisam compreender e planejar a Infra-estrutura de armazenamento e do servidor que irá trabalhar. Dessa forma, aspectos como diferenças entre 32 e 64 bits e bem como a interação com os principais componentes do SQL Server 2008, não devem ser esquecidos nesta análise.
Como em versões anteriores do SQL Server, o SQL Server 2008 utiliza intensamente dois recursos: memória e CPU. Esta infra-estrutura principal geralmente precisa ser ajustada para maximizar o desempenho em cenários onde encontramos grandes volumes de dados, por exemplo. Este artigo discutirá brevemente sobre memória e o que o administrador de banco de dados deve saber sobre este recurso para qualquer servidor de banco de dados. No próximo artigo falaremos sobre a infra-estrutura de CPU.
Observação: Este artigo foi feito com base no Microsoft SQL Server 2008 – CTP Fev no Windows Server 2003.
Uso de Memória no SQL Server
Quando um servidor SQL Server não está funcionando bem, atendendo as exigências de desempenho esperado, estamos numa situação onde pode ser um resultado de várias questões conjugadas, que podem ser: do próprio banco de dados, entre as instâncias do SQL, ou ainda no desempenho dos recursos físicos do servidor. Como em qualquer tipo de servidor, os gargalos podem ocorrer por causa da pressão em um ou vários recursos de servidor como memória, disco rígido, I/O, e no uso da CPU. Você precisa ser capaz de determinar se um sistema está impropriamente configurado para a carga de trabalho, ou se a modelagem de dados encontra-se pobre sendo a principal razão do problema.
Como qualquer outra plataforma de banco de dados de nível empresarial, o SQL Server 2008 foi projetado para usar uma grande quantidade de memória em momentos de pico na execução de uma consulta. Os administradores de banco de dados hoje devem compreender como a memória é utilizada, e, como eles podem configurar a memória para aproveitar ao máximo este recurso que está disponível para configuração em seus servidores de banco de dados.
A maioria dos administradores sabem que a memória para uma instalação do SQL Server é definida pelo sistema operacional. Uma instalação do sistema operacional Windows de 32 bits é projetada para utilizar apenas 4 GB de memória. Deste 4 GB de memória, 2 GB é reservado para o sistema OPERACIONAL e de 2 GB é reservado para aplicativos. Deixar apenas 2 GB de memória para todos os aplicativos nos servidores de hoje não é uma quantidade de memória suficiente para esses aplicativos. Portanto, o sistema operacional Windows fornece duas maneiras para aumentar a memória para aplicativos existentes em um servidor de 32 bits, que são: Adequar a memória disponível de 4GB (Tunning) e AWE.
·4GB Tunning – podemos ajustar os 4GB para que possa requer o uso de 3GB para as aplicações. Para isso, precisamos modificar o arquivo Boot.ini, a fim que o sistema operacional possa considerar a configuração que pretendemos fazer. Observe que esta alteração restringe o sistema operacional a 1GB e fornece os 3GB restantes para os aplicativos.
Observação: O sistema operacional Windows Server 2003 introduziu o parâmetro USERVA, que permite que você a ajuste a quantidade de memória para o sistema operacional em incrementos 128MB. Isso permite que você possa deixar um pouco a mais que o padrão 1 GB para o sistema operacional, caso você precise que o sistema operacional de mais memória.
Embora 3GB de memória possa parecer muita memória, para ambientes de banco de dados onde crescem em tamanho e complexidade, os administradores de banco de dados e desenvolvedores perceberam que 3 GB de memória não é o suficiente para um desempenho aceitável de suas aplicações. Para superar essa limitação de memória, sistemas operacionais Windows de 32 bits permitem para mais de 4 GB de memória por meio do uso de memória estendida.
·Memória estendida ou AWE - é a capacidade em que o sistema operacional permitir que os aplicativos usem o máximo 3 GB de 4 GB do que foi modificado, conforme explicamos anteriormente. O Windows usa ponteiros para endereçamento das páginas de dados na memória. O uso de ponteiros permite que o Windows utiliza o arquivo de paginação como memória, que amplia a quantidade de memória física realmente instalada. Isso é conhecido como memória virtual e é esse uso de ponteiros que limita a quantidade de memória que o Windows pode ver, 4 GB, porque um sistema operacional de 32 bits só pode conter ponteiros suficientes para apontar para 4 GB de memória. Para usar mais de 4 GB de memória, o aplicativo deve ser configurado para que ele pode ser enganado em pensar é um aplicativo 36 bits, que permite fazer uso do mais que 4 GB de memória. Ele faz isso através do uso da opção AWE.
Para realizar esta configuração em seu servidor de Banco de Dados, clique no botão direito no Database Engine que você realizou a conexão, depois selecione a opção Properties e escolha Memory, conforme é ilustrado na figura abaixo.
Observação: Os servidores configurados para permitir adicionar dispositivos a “quente” (Hot), você não precisa modificar o arquivo Boot.ini para permitir que os aplicativos possam usar mais do que 4 GB de memória.
Com o crescimento dos servidores de banco de dados, os servidores de 32 bits lentamente estão sendo substituídos, saindo de cena dando vez aos servidores de 64 bits em ambientes banco de dados médio e grande porte. Agora que você entende um pouco sobre como o Windows Server e o SQL Server 2008 e como eles interagem em relação à memória em um servidor de 32 bits, vamos examine como um servidor de 64 bits se comporta. A Arquitetura de memória do servidor de 32 bits e 64 bits é basicamente a mesma, mas como você agora tem 64 bits para ponteiros de memória você encontrará na instalação padrão uma leve mudança, agora você não precisa se preocupar sobre com as modificações em relação a memória alocada para o seu servidor de banco de dados, como por exemplo: 3GB, a PAE, ou AWE. Isso quando você administra uma instalação do SQL Server em 64 bits.
Um servidor de 64 bits pode manipular muito espaços de memória maiores do que 32 bits, devido a quantidade de ponteiros ser maior. Enquanto o limite teórico projetado de um servidor de 64 bits é ligeiramente maior do que 18.45 exabytes, e, a quantidade real de memória que esta arquitetura pode manipular depende da versão de 64-bits que você instala. X64 foi projetado para manipular até 8TB de Memória, enquanto IA64 de 64 bits Intel pode manipular até 7TB de memória. Esses são tamanhos padrões de memória que são maiores do que os servidores atualmente projetados para acomodar e também maiores do que os limites máximos de memória para o Windows Server 2003 ou Windows Server 2008. Atualmente 2TB em edições Windows Server 2008 Datacenter, Enterprise e edições IA64 Enterprise e Datacenter do Windows Server 2003 SP2.
Esperamos que este artigo possa ter contribuído e ajudá-lo a compreender os fundamentos básicos da memória no SQL Server, além do que as diferenças relacionadas com as arquiteturas 32 bits e 64 bits.
Sugerimos que os administradores de banco de dados faça uso da grande quantidade de material disponível na Microsoft e do portal SQLServer Magazine tanto para entender como este recurso se comporta no SQL Server e no Windows, bem como o que deve ser configurado no SQL Server maximizando assim o uso da memória instalada em seu servidor.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo