Como Otimizar um Servidor MySQL [Página 4/7] - Clube do Hardware
64.499 visualizações
O MySQL permite alguns mecanismos de armazenamento para suas tabelas. Os dois mais comuns são InnoDB e MyISAM.
A principal diferença entre os dois é que o MyISAM oferece travamento por tabela, o que significa que quando um dado está sendo escrito em uma tabela, a tabela toda será trancada e caso haja outras escritas a serem realizadas ao mesmo tempo na mesma tabela, elas terão que esperar até que a primeira tenha terminado de escrever os dados.
O InnoDB, por outro lado, oferece travamento por coluna, o que significa que quando dados estiverem sendo escritos em uma coluna, apenas aquela coluna em particular ficará trancada; o restante da tabela está disponível para escrita.
A primeira vista, parece que o InnoDB é superior ao MyISAM. No entanto, o mecanismo InnoDB usa mais recursos do sistema (poder de processamento, ou seja, carga do servidor) que o MyISAM, e portanto, você precisará de um servidor mais poderoso para rodar o InnoDB. No InnoDB, a carga do servidor fica mais alta que no MyISAM. Você poderá acabar com uma carga tão alta que em vez de aumentar o desempenho do servidor, você na verdade diminui o desempenho geral ao trocar do MyISAM para o InnoDB.
Os problemas de travamento de tabela são mais aparentes em servidores muito movimentados. Para o cenário de um site típico, geralmente o MyISAM oferece melhor desempenho a um menor custo do servidor.
Qual ferramenta você deverá usar? Consulte a documentação do programa que você estiver usando. Normalmente no guia do administrador, há uma seção específica sobre este assunto.
Para verificar qual a ferramenta que as tabelas de um banco de dados em particular estão usando, rode a seguinte query:
Você verá o mecanismo listado em "Engine". Note que dentro do mesmo banco de dados você poderá ter algumas tabelas usando o MyISAM e outras usando o InnoDB.
Para alterar o mecanismo de uma tabela, rode a seguinte query, onde você deverá substituir a "tabela" pelo nome da tabela que você deseja reconfigurar e o "mecanismo" por "MyISAM" ou "InnoD":
ALTER TABLE tabela ENGINE=mecanismo;
Caso a carga no servidor MySQL esteja muito alta e o servidor não estiver usando o arquivo de troca, antes de substituir o servidor por um mais caro com mais poder de processamento, você poderá tentar alterar suas tabelas para usar o mecanismo MyISAM em vez do InnoDB para ver o que acontece.
No final, a ferramenta que você deverá usar dependerá do cenário do servidor em particular, baseado no que foi discutido acima.
Se você decider usar somente tabelas MyISAM, você deve adicionar as seguintes linhas ao seu arquivo my.cnf:
Se você tiver somente tabelas MyISAM em seu servidor MySQL, você pode desabilitar o mecanismo InnoDB, o que diminuirá o consumo de memória. Isso pode ser feito adicionando-se a seguinte linha ao seu arquivo my.cnf:
No entanto, se você não adicionar as outras duas linhas mostradas acima em seu arquivo my.cnf, a linha skip-innodb impedirá o seu servidor MySQL de carregar, visto que as versões atuais do MySQL usam o mecanismo InnoDB por padrão.