Home - www.devmedia.com.br


Otimização do MySQL
Introdução aos mecanismos de otimização

Este artigo tem como objetivo apresentar o processo de otimização do banco de dados MySQL, bem como introduzir os aspectos que devem ser considerados durante o ajuste deste SGBD (Sistema Gerenciador de Banco de Dados). Este é o primeiro artigo de uma série que discutirá possibilidades de otimização do MySQL, abordando a otimização de consultas, a otimização do SGBD propriamente dito, e o ajuste do Sistema Operacional (SO) e do hardware que suportarão o seu sistema como um todo. Os artigos seguintes apresentarão os detalhes envolvidos em cada uma das partes apresentadas anteriormente.

Para a otimização de um SGBD precisamos eliminar os possíveis problemas de desempenho existentes em todos os níveis do sistema, isto é, precisamos identificar as consultas lentas que eventualmente são submetidas ao banco. Precisamos ainda melhorar as configurações do servidor de banco de dados, do sistema operacional, e finalmente o hardware que suportará toda o sistema. Alguns aspectos da otimização não se aplicam somente ao MySQL, e sim a todos os SGBDs, por isto algumas metodologias apresentadas aqui podem, em alguns casos, ser aplicadas também a outros SGBDs disponíveis no mercado.

Antes de explorarmos os itens apresentados anteriormente é necessário ressaltar que o processo de otimização não é trivial, visto que é preciso medir todos os aspectos do seu sistema para o entendimento preciso do funcionamento da sua aplicação. Assim, pode-se obter o ajuste que seja mais adequado à sua necessidade, por exemplo, o ajuste do SGBD para aplicações de leitura é diferente daquele onde prevalecerão escritas. Além disto, as medições de desempenho do seu sistema são imprescindíveis dado que estas servirão de referência para determinar se uma alteração realizada no SGBD teve efeitos positivos ou não.

O primeiro ponto a ser discutido é a otimização das consultas SQL. A interface da aplicação com o SGBD é feita a partir de consultas SQL, ou seja, esta é a linguagem que permite a extração das informações armazenadas pelo SGBD. Portanto, durante o processo de projeto da sua base de dados, é preciso vislumbrar os tipos de consultas que serão mais comuns e criar a base de forma que o processo de extração de dados seja facilitado. Além disto, é preciso escrever as consultas de forma que as mesmas sejam executadas no menor tempo possível. Mas, também é preciso monitorar as consultas lentas que eventualmente existam, e eliminá-las, seja pela reescrita da consulta ou até mesmo através da alteração da sua aplicação de forma a fazer um acesso mais eficiente ao banco. Este deve ser um ponto de averiguação constante, já que em ambiente onde há um número elevado de consultas e estas consomem muito tempo de serem processadas, isto criará uma deficiência considerável em termos de desempenho. Para a otimização de consultas é preciso entender a forma como as mesmas são processadas pelo MySQL, e assim, deve-se tentar atuar em cada etapa visando a redução do tempo de processamento das mesmas, gerando um ganho global considerável. No próximo serão discutidas as etapas de execução de uma consulta, bem como técnicas para o monitoramento destas consultas e da visualização do plano de execução das mesmas.

Uma vez eliminados os problemas relativos às consultas SQL, pode-se modificar as configurações do MySQL de forma a fazer um uso mais apropriado dos recursos disponíveis no SO, melhorando assim o desempenho do banco. Para isto é preciso entender como o MySQL funciona internamente, isto significa dizer que precisamos entender como o MySQL utiliza memória e disco, bem como quais são os principais parâmetros que podemos alterar para atingir este ganho. O MySQL apresenta um conjunto de ferramentas para o monitoramento do servidor de forma a detectar quais são os gargalos do seu sistema, e assim permitindo a eliminação dos mesmos. Estes aspectos serão abordados em detalhes nos terceiro artigo referente à otimização do MySQL.

Finalmente, precisamos aferir e monitorar o desempenho do SO que suportará todo o sistema, além do hardware e suas configurações. No sistema operacional podemos utilizar recursos mais apropriados para o banco, tais como sistema de arquivos mais eficientes, processos e threads nativas, além da escolha de um SO mais apropriado ao MySQL. Esta escolha pode, em alguns casos, gerar ganhos de desempenho em torno de 50%. Por último, mas não menos importante, é a escolha do hardware adequado. Por exemplo, ao utilizar-se de um processador de 64 bits é possível a utilização de arquivos grandes, além de permitir a alocação de uma quantidade maior de memória. Isto, possibilita a configuração de buffers de memória maiores para o MySQL, melhorando consideravelmente o desempenho. Estes aspectos serão discutidos no último artigo sobre otimização.

Espero que apreciem o assunto de otimização de banco de dados e em breve estará disponível o artigo relativo à otimização de consultas SQL, onde apresentarei todas as ferramentas disponíveis no MySQL para nos auxiliar nesta tarefa.

Abraços e até breve!

Eber M. Duarte.

 

 


Eber Duarte é bacharel em Ciência da Computação, pós-graduado em Engenharia Elétrica e MySQL Professional Certified. Trabalha há 3 anos na EAC Software (BH/MG) como Analista e desenvolvedor de sistemas, atuando especialmente no desenvolvimento de sistemas Web. Atualmente, também é consultor e instrutor do banco de dados MySQL.
Contatos: eber@eacnet.com.br
www.mysqlbrasil.com.br ou www.eacsoftware.com.br

  Otimização do MySQL    
  Novidades da versão 5.0 do MySQL    
  Topologias de replicação no MySQL    
  Replicação de dados no MySQL    
  Como Trabalhar com Tabelas MyISAM Grandes    
  Verificação e correção de tabelas corrompidas no MySQL    
  Backup Online no MySQL    
  Backup e restauração no MySQL    
  Integridade Referencial no MySQL    
  Tabelas do MySQL    
  Gerenciamento de usuários e Controle de Acessos    
  Ferramentas Gráficas Para Modelage    
  Iniciando o Uso do MySQL    
  Boas-Vindas    
     

 

Todos os direitos reservados: DevMedia Group SQL Magazine - 2004