Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que se trata o artigo?

De teste de desempenho do MySQL entre os sistemas Operacionais Linux e Windows. Este artigo apresenta a realização passo a passo de um benchmark considerando o desempenho do MySQL no Linux e no Windows.

Para que serve?

Para comparar o desempenho de uma mesma aplicação, utilizando o mesmo Sistema Gerenciador de Bancos de Dados, mas sendo executado em Sistemas Operacionais diferentes.

Em que situação o tema é útil?

Para tomar uma decisão sobre o qual Sistema Operacional utilizar em uma implementação.

Resumo DevMan

Muitas vezes nos perguntamos qual o melhor SGBD para utilizar em nossa aplicação. Entretanto, muitas vezes, além da escolha do SGBD, também devemos estar atentos em qual Sistema Operacional o SGBD escolhido será utilizado, pois isso certamente fará diferença. Neste sentido, este artigo apresenta um teste de desempenho do MySQL entre os sistemas operacionais Linux e Windows.

O que a Oracle fará com o MySQL? Esta é uma pergunta que veio a tona desde a compra da Sun pela Oracle (que por sua vez, comprara anteriormente a MySQL AB), pois parece inapropriado que a empresa mantenha dentro de casa um concorrente ao seu produto principal. Muitas teorias apareceram desde então, e entre elas, que o MySQL levaria uma morte lenta e dolorosa, intencionalmente esquecido pelas equipes internas de suporte e manutenção deste SGBD até que se tornasse obsoleto.

Certamente esta teoria não prevaleceu, visto o anúncio da versão 5.5 do MySQL, com grandes melhorias de desempenho, escalabilidade e replicação. Além disso, a Oracle tem promovido diversos encontros de usuários, anúncios, palestras via internet e presenciais, e até colocou o MySQL como matéria de capa da última edição da Oracle Magazine.

Eu creio que este direcionamento da Oracle, de investimentos pesados no MySQL, continuará, pois acho que para a Oracle Corporation, o MySQL não é concorrente do Oracle Database - ele é concorrente do SQL Server. Em matéria de funcionalidades, ele está muito aquém do Oracle Database. Recursos como ASM (um sistema de arquivos específico para bancos de dados Oracle), ferramenta nativa de Backup / Recovery físico (como o RMAN), compressão, criptografia transparente, auditoria, Flashback Database (que permite consultar dados como eram no passado, ou mesmo voltar o banco todo no tempo), entre outros, não existem no MySQL e não devem existir em um futuro próximo. E para ser justo, diversas funcionalidades do SQL Server também não existem no MySQL, mas este está muito mais próximo do SQL Server do que o Oracle Database, tanto em funcionalidades quanto em similaridade das linguagens SQL utilizadas por cada um destes produtos. Mas a principal semelhança entre estes dois produtos é a facilidade de implementação e desenvolvimento: é muito mais simples instalar o MySQL e o SQL Server, e muito mais rápido criar um novo sistema rodando sobre eles do que no Oracle Database, e geralmente isto acontece sem a participação de um DBA, apenas dos desenvolvedores - são aqueles sistemas que começam como um projeto menor, mas logo tornam-se vitais para a empresa. Claro que a administração de nenhum destes produtos é fácil, mas a curva de implementação inicial certamente é menor no MySQL e SQL Server. É para este tipo de sistemas que eu suponho que a Oracle quer promover o MySQL, abandonando a versão gratuita e limitada do Oracle Database, o Oracle Database Express.

Bem, para que o MySQL seja um concorrente aceitável para o SQL Server, ele deve ter excelente desempenho no Windows Server, também por facilidade de implementação. Foi para este fim que fiz este teste, para comparar o desempenho do MySQL em computadores com o sistema operacional Linux e com o Windows Server. Como as conexões do MySQL são feitas através de threads, ao invés de processos (como é no Oracle), faz sentido que sua escalabilidade seja maior no Windows do que no Linux, já que aquele trabalha nativamente com threads, e este com processos. Em minha opinião, teorias só podem ser sustentadas por fatos e dados, então vamos ao nosso benchmark (ver Nota Devman 1).

Nota DevMan 1. Benchmark

Benchmarking é a busca das melhores práticas na indústria que conduzem ao desempenho superior. É visto como um processo positivo e pró-ativo por meio do qual uma empresa examina como outra realiza uma função específica a fim de melhorar como realizar a mesma ou uma função semelhante. O processo de comparação do desempenho entre dois ou mais sistemas é chamado de benchmarking, e as cargas usadas são chamadas de benchmark.

Apesar do seu neologismo, "Benchmarking" é mais do que uma simples combinação de palavras - exprime uma filosofia. Este processo não se limita na simples identificação das melhores práticas, mas, principalmente, na sua divulgação através das diversas técnicas do Marketing. "Benchmarking é simplesmente o método sistemático de procurar os melhores processos, as ideias inovadoras e os procedimentos de operação mais eficazes que conduzam a um desempenho superior" (Christopher E. Bogan).

Preparação

Este teste foi feito com computadores comuns, com 1 processador de dois núcleos de arquitetura x86-64, 4GB de memória RAM, e apenas um HD SATA de 320GB. Esta máquina é certamente inferior aos servidores mais encontrados no mercado, mas atenderá perfeitamente nossos testes, como veremos a seguir quando atingirmos o limite do equipamento.

Neste teste foram utilizados 3 computadores idênticos com a configuração já mencionada: em um foi instalado o sistema operacional Windows Server 2008 R2 x86-64, e no outro foi instalado o CentOS 5.5 x86-64. O CentOS é um clone do Red Hat Enterprise Linux, mas em termos binários, é idêntico, e permite atualizações sem custo (por isto prefiro esta distribuição). O terceiro computador (também com CentOS 5.5) foi utilizado como cliente, rodando os programas já mencionados.

Os sistemas operacionais dos três computadores tiveram todas as atualizações disponíveis instaladas, inclusive todas as opcionais do Windows. Nos dois primeiros computadores, que funcionarão como os servidores, foi instalado o MySQL versão 5.5.9, e mais nenhum outro programa, nem antivírus no Windows. Todas as máquinas foram instaladas com uma partição única. O firewall foi mantido ativo em todos os computadores (foi liberada a porta 3306 em todos, utilizada pelo MySQL), como é feito na instalação padrão, e pelo mesmo motivo os computadores com CentOS ficaram com o SELinux ativo.

No CentOS, como é um passo necessário, foram escolhidos os seguintes grupos de pacotes durante a instalação: GNOME Desktop Environment, Editors, Graphical Internet, Text-based Internet, Development Libraries, Development Tools, Server Configuration Tools, Administration Tools, Base, System Tools, Window System. Para o Windows Server, foi feita uma instalação completamente padrão. Todas as máquinas de teste foram configuradas com endereço IP fixo. A máquina Windows utiliza o endereço IP 10.1.1.3, e Linux utiliza o IP 10.1.1.4.

O programa que utilizamos para executar os testes foram dois:

    • mysqlslap, que é uma ferramenta nativa do MySQL;
    • SysBench, uma ferramenta mais completa e amplamente utilizada em testes. Veja no final deste artigo, na Seção de Referências, o link para download desta ferramenta.

No terceiro computador (com CentOS), que será o cliente, foi instalado também o MySQL 5.5.9, pois ele contém o mysqlslap, e é um requisito da instalação do programa SysBench, que foi instalado logo em seguida.

Outra consideração deste benchmark é que ambos os sistemas operacionais estão com sua configuração padrão. A instalação foi feita da forma mais simples possível. Novamente, a intenção é simular o que é mais comumente encontrado no mercado.

...
Quer ler esse conteúdo completo? Tenha acesso completo