Conforme o título: existe uma lista rápida de candidatos para a migração de tabelas para o InnoDB? E o que deve permanecer MyISAM.
Algumas informações adicionais
- O site tem uma carga de leitura bastante pesada, mas insere aproximadamente 10 nós por hora, com tags e afins.
- Fazemos muito uso do CCK (uma enorme quantidade de tabelas normalizadas na forma de
content_field%
). - Também usamos Views para quase todos os nossos blocos e páginas; mas muitos deles são candidatos à substituição por módulos personalizados (para reduzir as consultas ao banco de dados e o peso dessas consultas).
- Os usuários são todos anônimos; com exceção de alguns editores e webmasters conectados.
performance
database
berkes
fonte
fonte
Respostas:
Você deve converter todos os dados para o InnoDB para evitar problemas de bloqueio de tabela. No entanto, aqui estão algumas coisas para pensar:
Indexação FULLTEXT
No momento, apenas o MyISAM suporta a indexação FULLTEXT. A indexação do FULLTEXT para o InnoDB está atualmente em andamento para o MySQL 5.6, mas não está pronta para produção . Se você tiver alguma tabela Drupal que possua índices FULLTEXT, ela não poderá ser convertida no InnoDB no momento.
UPDATE na indexação FULLTEXT
O MySQL 5.6 agora é GA (disponível para uso em produção). Por favor, tente a indexação FULLTEXT no InnoDB.
Para localizar as tabelas que possuem um
FULLTEXT
índice, execute esta consulta:Se nenhuma linha retornar, converta todas as tabelas do InnoDB para o conteúdo do seu coração. Eu escrevi um post anterior sobre como converter todas as tabelas MyISAM para InnoDB usando apenas mysql .
Replicação MySQL
Se você tiver um ambiente com muita leitura, as leituras podem ser mais rápidas no MyISAM se você fizer o seguinte:
--skip-innodb
/etc/my.cnf em todos os Slaves (converte tabelas para MyISAM ao carregar dados no Slave)ALTER TABLE tblname ROW_FORMAT=FIXED;
ROW_FORMAT=FIXED
nas páginas 72,73. Isso converterá internamente todos os campos VARCHAR em CHAR. Isso aumentará a tabela MyISAM, mas os SELECTs executados serão muito mais rápidos. Eu pessoalmente posso atestar isso. Certa vez, tive uma mesa com 1,9 GB. Eu mudei o formato comALTER TABLE tblname ROW_FORMAT=FIXED
. A tabela acabou com 3,7 GB. A velocidade dos SELECTs foi 20-25% mais rápida sem melhorar ou alterar qualquer outra coisa.A única dor de cabeça com isso é tornar seu aplicativo ciente de escravos de leitura separados.
EPÍLOGO
Se você estiver procurando outros benefícios que cada mecanismo de armazenamento possui, verifique o DBA StackExchange:
Apr 14, 2011
: Quais são as principais diferenças entre o InnoDB e o MyISAM?Sep 20, 2011
: Melhor do MyISAM e InnoDBMay 02, 2012
: Qual mecanismo de armazenamento mysql escolher?May 03, 2012
: Qual é mais rápido, InnoDB ou MyISAM?fonte
Como o site está no lado de leitura pesada, eu simplesmente converteria todas as tabelas para o InnoDB. Você poderá otimizar o desempenho da leitura dimensionando o buffer pool do InnoDB e o cache de consulta adequadamente. Dessa forma, estamos obtendo milhares de consultas por segundo nos servidores de banco de dados dedicados em nossa infraestrutura de hospedagem Drupal.
fonte