você está aqui: Home → Colunistas → Bancos de Dados Livres
Por Luiz Paulo de Oliveira Santos
Data de Publicação: 25 de Setembro de 2006
Todos leitores que um dia precisaram hospedar uma aplicação em um provedor de hospedagem têm a mesma dúvida: Será que o provedor possui performance no acesso a banco de dados?
Atualmente todos os provedores disponibilizam MySQL como banco de dados padrão.
O MySQL é um SQL leve, muito veloz e indicado para aplicações onde se deseja armazenar e extrair informações rapidamente. Porém peca por não ter alguns recursos para aplicações mais elaboradas, como triggers por exemplo, que somente está disponível à partir da versão 5 do MySQL.
Porém as vezes, o provedor hospeda a página em um equipamento e o banco em outro, e com isso podemos ter gargalos de performance, ou mesmo situações mais complexas como ter "dezenas" de domínios armazenados em um mesmo servidor, e todos rodando sistemas de portais como Xoops, Bitweaver, Joomla ou outros. Logo, com muita concorrência no servidor a performance pode sofrer alterações, e geralmente para pior.
Logo, testar performance em um servidor de banco de dados é fundamental. E podemos fazer alguns pequenos testes que poderão nos indicar se dia-a-dia a performance de nosso servidor está se mantendo ou se degradando.
O MySQL implementa uma função chamada BENCHMARK(). Essa função é bem interessante, pois executa uma operação <n> vezes, e devolve o tempo que levou para executar essa operação.
Por exemplo:
mysql> SELECT BENCHMARK(1000000,1+1); +------------------------+ | BENCHMARK(1000000,1+1) | +------------------------+ | 0 | +------------------------+ 1 row in set (0.32 sec)
O exemplo acima demonstra que o MySQL pode executar 1000000 expressões de soma (1+1) + em 0.32 segundos em um PentiumII 400MHz. Quanto menor for o valor, mais rápido será a performance do banco.
Por exemplo, podemos testar o resultado de um SELECT, porém esse SELECT dele retornar uma única linha e tratar uma única coluna:
SELECT benchmark( 1000000, (SELECT count( artigo ) FROM dbfreemag ));
Dessa forma podemos testar o desempenho do banco no servidor.
Mas seria interessante avisar o administrador antes de rodar algum tipo de benchmark, pois CPU do servidor é altamente exigida nesse momento. Principalmente se for rodar queries de teste mais pesadas.
Se for rodar alguma Query pesada, CERTIFIQUE-SE QUE NÃO ESTÁ FAZENDO EM UM SERVIDOR DE PRODUÇÃO. Queries pesadas devem ser rodadas apenas em servidores de teste, porque podem comprometer gravemente a performance do servidor, como por exemplo:
SELECT BENCHMARK(1000000, (SELECT BENCHMARK(1000000, 1+1)))
Espero que a dica seja útil, mas utilizem a função com cautela.
Forte abraço e até mais.
Luiz Paulo de Oliveira Santos teve seu primeiro contato com computadores em 1984, estudou BASIC para equipamentos de 8 bits (ZX-81 e Apple 2), em 1985 com o ambiente de 16 bits, e em 1988 com o ambiente de 32 bits. Em 1993 foi um dos primeiros Brasileiros a ter contato com o VBK que em 1995 se tornou o Delphi. Graduou em Tecnologia Em Processamento de Dados, cursou especialização em Análise de Sistemas e atualmente é graduando em Ciências Jurídicas. Atua como analista de suporte de redes da Universidade Metodista de Piracicaba, é editor da revista DB Freemagazine (uma revista gratuíta focada exclusivamente para bancos de dados Cliente/Servidor) e professor nas Faculdades Integradas Einstein de Limeira no curso de Tecnologia em Sistemas de Informação. Tem experiência nas áreas: Sistemas de Computação, Redes e Teleprocessamento de Dados, Bancos de Dados cliente-servidor e SQL. É autor do livro Firebird - Dicas de Segurança, publicado pela Editora Ciência Moderna.