DataARTIGO

Melhores práticas na virtualização do SQL Server – Parte 02

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.

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

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.

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.

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.

Mauro Pichiliani é bacharel em Ciência da Computação, Mestre e doutorando em computação pelo ITA (Instituto Tecnológico de Aeronáutica). Trabalha há mais de 10 anos utilizando diversos bancos de dados e ferramentas de programação. Pode ser contatato no twitter como @pichiliani e no e-mail pichiliani@gmail.com

Ver perfil