Veja a primeira parte do artigo:
Melhores práticas na virtualização do SQL Server – Parte 01
*
Olá, pessoal. Esta semana continuarei a falar sobre as melhores práticas para a virtualização do SQL Server. Desta vez me concentrarei nos principais aspectos relacionados à configuração, ambiente e desempenho do SQL Server em um ambiente virtualizado.
Na primeira parte do artigo citei e comentei alguns pontos que devem ser considerados e analisados durante a fase de planejamento de um projeto de virtualização do SQL Server. Destaco, ainda, que o software de virtualização utilizado para apresentar as melhores práticas foi o VMware ESX Server 3.x e que um dos principais fatores a serem considerados no projeto de virtualização é o hardware.
Vou começar a segunda parte deste artigo sobre as melhores práticas dizendo o que a maioria das pessoas pensam logo de cara quando é mencionada a virtualização do SQL Server: o desempenho. Com certeza este é um dos fatores mais importantes para quem trabalha com o SQL Server e já adianto que a virtualização terá um impacto significativo no desempenho, para o bem ou para o mal.
Como dito anteriormente, a escolha correta do hardware é crucial para um projeto de virtualização. Tentar colocar uma máquina virtual no mesmo servidor utilizado atualmente por um banco de dados é, com certeza, uma péssima idéia e vai gerar diversos problemas, inclusive perda significativa de desempenho. Por isso, mais uma vez, indico que é preciso analisar cuidadosamente o ambiente atual para se obter valores de métricas que indiquem qual deverá ser o hardware adequado para suportar a máquina virtual com o desempenho no mínimo igual ao ambiente atual. Contudo, infelizmente este ainda é um dos principais pontos negligenciados pelas equipes que comandam projetos de virtualização.
Uma vez que seja definido o hardware é preciso configurar a máquina virtual com valores específicos para se obter o melhor desempenho do SQL Server. Para auxiliar nesta tarefa, a VMware montou uma parte específica no seu web site que conta com diversos recursos para quem está pensando em virtualizar o SQL Server. O endereço para acessar esta seção do site da VMware que cobre os aspectos de virtualização do SQL Server é http://www.vmware.com/solutions/business-critical-apps/sql/
Um dos documentos mais interessantes disponibilizado pela VMware chama-se Microsoft SQL Server and VMware Virtual Infrastructure. Este documento contém as melhores práticas, questões comuns, técnicas e comentários a serem considerados quando se está virtualizando o SQL Server. O endereço para o download deste documento, em inglês, é: http://www.vmware.com/resources/techresources/10002
Este primeiro documento é leitura obrigatória que deve ser feita antes da criação da máquina virtual. Ele cobre todos os detalhes de infra-estrutura necessários para a configuração da máquina virtual, com destaque especial para as configurações de CPU, memória, rede e storage. Também são apresentadas as melhores práticas para o deployment, monitoria e gerenciamento. Por fim, o documento também apresenta como medir o desempenho antes e depois da virtualização para fins de comparação.
O próximo documento que recomendarei é o excelente SQL Server Performance in a VMware Infrastructure 3 Environment. Este documento é um estudo de desempenho de 16 páginas que contém o ambiente, configuração, métricas, testes, experimentos e resultados de um caso de uso do SQL Server em um ambiente virtualizado. O endereço para o download deste documento, em inglês, é: http://www.vmware.com/resources/techresources/1007
Inicialmente este documento apresenta os resultados da comparação de transações por segundo quando são utilizadas 1, 2 e 4 CPUS virtuais nos cenários de 32 e 64 bits. Em seguida o cenário utilizado nas comparações é apresentado, indicando qual foi o hardware utilizado, o storage, o sistema operacional e o cenário de testes.
Os resultado são apresentados na forma de diversos gráficos indicando que conforme são adicionados mais CPUs virtuais, o sistema vai escalando linearmente. Um dos gráficos que comprova este resultado pode ser visto na figura 1. No gráfico da figura 1 temos um eixo que traz a quantidade de clientes conectados e o valor máximo de transações por segundo no outro eixo. As colunas pintadas de verde indicam o resultado obtido quando se utilizou 4 CPUs em 32 bits e as colunas pintadas de laranja indicam o resultado quando se utilizou 4 CPUs em 64 bits.

Figura 1. Gráfico comparando transações por segundo vs. a quantidade de clientes no cenário com 4 CPUs em 32 e 64 bits
Este documento ainda apresenta muitas informações sobre o percentual de consumo de CPU, taxa de transação, métricas utilizadas e critérios de comparação. Com certeza vale uma lida para quem está preocupado com questões de desempenho e escalabilidade.
O próximo documento que recomendo chama-se SQL Server Workload Consolidation. Este documento também é um estudo de performance da virtualização do SQL Server com o VMware ESX Server 3.5 conduzido pela própria VMware. O endereço para o download deste documento, em inglês, é: http://www.vmware.com/resources/techresources/1081
O objetivo deste estudo é mostrar como uma máquina virtual que contém o SQL Server se comporta perante diversos tipos de cargas e testes. Em geral, o estudo procura demonstrar que o ESX Server 3.5 possui uma ótima escalabilidade. O cenário físico de hardware utilizado neste estudo é apresentado na Figura 2.

Figura 2. Cenário utilizado no teste de escalabilidade
Os detalhes técnicos do hardware (fabricante, modelo, rede, processador, etc) são apresentados junto com o documento. Para comparar os resultados o estudo analisou diversas variáveis, que incluem a quantidade de usuários concorrentes, o tamanho do banco de dados, o número médio de pesquisas por pedido, o número médio de itens de pedido retornado por cada pesquisa e tempo de resposta.
Este estudo utilizou o popular banco de dados Dell DVD Store 2 (DVD2) como modelo de dados e massa de testes. Este banco de dados contém um modelo de uma loja que aluga DVDs, pode ser parametrizado e é disponível livremente. Nos testes realizados o banco de dados ocupou aproximadamente 90GB de dados e índices com a quantidade de linhas das principais tabelas variando entre 0 e 600 milhões.
Um dos resultados mais interessantes deste estudo é apresentado no gráfico da figura 3. Este gráfico correlaciona a quantidade de usuários conectados com a utilização da CPU e o tempo de resposta normalizado. Neste cenário oito processadores virtuais foram utilizados e pode-se notar que conforme a quantidade de usuários cresce, o processamento cresce de forma quase linear.

Figura 3. Correlação entre crescimento de usuários e utilização das CPUs virtuais
Além das análises de escalabilidade, este estudo também apresenta resultados interessantes sobre a divisão de processamento entre as CPUs virtuais conforme a carga e os usuário vão aumentando. Isso significa que se houver uma demanda maior, com certeza a adição de novas CPUs virtuais vai proporcionar uma divisão de carga entre os processadores virtuais e, eventualmente, um ganho de desempenho.
O último documento que comentarei é um estudo de performance conduzido por uma empresa independente chamada Brocade. O documento se chama Benchmarking Microsoft SQL Server Using VMware ESX Server 3.5 e está disponível em PDF no seguinte endereço: http://www.vmware.com/files/pdf/benchmarking_micrsoft_sql_vmware_esx_server_wp.pdf
Este documento segue o padrão de testes em banco de dados chamado de TPC-C. Este padrão de testes emula o ambiente de processamento de um banco de dados OLTP, contendo a criação de novos pedidos, itens de pedidos, produtos, pagamentos e outras entidades com se estivessem sido feitos diretamente por uma aplicação. Sem entrar em maiores detalhes, este é um dos testes mais bem aceitos na área de banco de dados e gera como resultado diversos valores, entre eles as famosas métricas de quantidade máxima de transações por minuto, ou TPM (Transactions Per Minute), e quantidade máxima de transações por segundo, ou TPS (Transactions Per Second).
Dentre os principais resultados, este estudo identificou que a utilização de diversas instâncias virtuais do SQL Server em paralelo possui uma ótima escalabilidade e distribuição de recursos. Isto que dizer que, de acordo com o cenário, testes e ambientes do estudo, a utilização de mais de um servidor virtual com um SQL Server no mesmo hardware é uma ótima solução para substituir servidores físicos.
Um dos resultados interessantes deste teste é apresentado na tabela da figura 4, que traz na primeira coluna a quantidade de máquinas virtuais executadas em paralelo, cada uma com um processador virtual. O servidor físico contou com 8 processadores reais e com 32 GB de memória RAM. São apresentados os valores comparativos de transações por minuto e por segundo conforme a quantidade de usuários e a quantidade de máquinas virtuais no servidor físico.

Figura 4. Comparação de TPS e TPM por quantidade de máquinas virtuais e usuários
Para finalizar, indico um link que contém diversos cases de sucesso que utilizam as tecnologias da VMware e da Microsoft em conjunto. Apesar de não terem muitos detalhes técnicos, estes documentos podem auxiliar na argumentação pró-virtualização perante a gerencia ou a diretoria. O endereço para estes cases de sucesso é:
http://www.vmware.com/technology/virtual-infrastructure-apps/microsoft/sql_server.html
Um grande abraço e até a próxima, pessoal.






