Busca

Visite também: UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 



 

Aprenda inglês em casa

Baixe gratuitamente as duas primeiras aulas

English for Reading and Listening

Receba por email, diariamente, mensagens contendo materiais para leitura e audição, incluindo arquivos no formato MP3 gravados por falantes nativos.

Saiba mais e faça sua inscrição

Performance no MySQL

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.

Recomende este site
Recomendar este artigo

Opinião dos Leitores

Luiz Paulo de Oliveira Santos
26 Set 2006, 00:36
Ola Renato,

Me escreva por e-mail para agilizarmos a solução. Uma vez resolvido coloco a solução final aqui no Forun.
Renato
25 Set 2006, 16:40
Olá Luiz Paulo .. eu já ahavia testado assim SELECT BENCHMARK(1000000, (SELECT count(produtos.id) FROM produtos)); mas continua sem funcionar...Se você puder me ajudar agradeço...



Obrigado pela atenção

Renato
Luiz Paulo de Oliveira Santos
25 Set 2006, 16:12
Renato, tudo bem?

Experimente colocar o segundo SELECT dentro de parênteses, conforme o exemplo a seguir:

SELECT BENCHMARK(1000000, (SELECT count(produtos.id) FROM produtos));

Se continuar com problemas, me avise.

[]s

Luiz
Renato
25 Set 2006, 15:43
Eu teste a dica nisso aqui e não funcionou:
SELECT BENCHMARK(1000000, SELECT count(produtos.id) FROM produtos);

Alguém pode me dá uma dica ai o q fiz de errado??

Valeu pelo artigo..

Renato
João Leal
25 Set 2006, 14:51
Muita boa a dica, trabalho com o mysql, portanto cada dia aprendo algo a mais.
Grato pela sua boa vontade de passar algo que sabe para quem quer aprender.
valeu.
*Nome:
Email:
Me notifique sobre novos comentários nessa pagina
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script

Artigos Publicados


Para se manter atualizado sobre as novidades desta coluna, consulte sempre o newsfeed RSS

Desenvolverde RSS

Para saber mais sobre RSS, leia o artigo O Padrão RSS - A luz no fim do túnel.