Eu tenho um único banco de dados de cerca de 4,5 GB em execução em um servidor com 8 GB de RAM. A grande maioria das tabelas são MyIsam (cerca de 4,3 GB), mas em breve estarei convertendo algumas delas para InnoDB. (Será um processo lento, concentrando-se inicialmente nas tabelas de gravação mais intensiva).
Há algo de errado em executar um servidor dedicado onde existem os dois tipos de mecanismos de armazenamento?
Não há nada de errado em usar vários mecanismos de armazenamento na mesma máquina fÃsica, desde que você entenda os prós e os contras de cada um. Existem considerações de desempenho, limitações de recursos e casos de uso para todos os tipos de armazenamento de plugins.
Por exemplo, se você tiver uma pequena tabela com 90% de gravações, poderá escolher MyISAM. Se os dados puderem ser regenerados facilmente e for uma tabela pequena, digamos para enfileiramento, você pode escolher Memória. Se você tiver uma tabela com 90% de leituras e os dados precisarem estar lá quando você a procurar, provavelmente escolherá um mecanismo de armazenamento que ofereça suporte a transações e atomicidade configurável, como o InnoDB. Se você deseja acessibilidade por meio do sistema de arquivos sem dados prejudiciais, pode escolher CSV.
No entanto, você pode usar com segurança vários mecanismos de armazenamento no mesmo esquema, bem como no host fÃsico.
Deixe-me observar, porém, que seus buffers desempenham um papel em toda essa confusão. Se você usar MyISAM e InnoDB, precisará ter cuidado para que seu key_buffer e innodb_buffer_pool não entrem em conflito. Isso exigirá um planejamento cuidadoso de sua parte, mas é isso que fazemos.
Não sei dizer se isso é uma prática comum. Posso dizer sobre minha própria experiência.
Sempre uso a melhor ferramenta para o trabalho, então misturo os motores o tempo todo. A maioria dos meus projetos usa o MyISAM como mecanismo padrão.
Quando preciso de recursos especiais disponÃveis apenas no InnoDB, eu vou atrás.
Quando uma tabela é principalmente somente leitura, escolho o mecanismo de arquivamento antes que eu possa piscar.
Sabendo que o servidor da máquina tem memória suficiente, todos os meus dados temporários são armazenados nas tabelas Heap.
Eu vi no passado algumas lentidões misturando MyISAM e InnoDB, mas este não é um problema especÃfico do MySQL. É um problema de design que não aparece quando você usa apenas um mecanismo. Na verdade, usar o mecanismo errado causa mais lentidão, não importa se é apenas MyISAM, apenas InnoDB ou uma mistura de ambos. É difÃcil definir uma fórmula para saber quando a desaceleração aconteceria. Apenas testes reais poderiam dizer isso a você.
Claro, você não poderia preservar integridade e consistência misturando InnoDB e MyISAM em uma consulta única.
Eu tento evitar misturar tabelas MyISAM e InnoDB no mesmo banco de dados, mas isso é mais por razões de sanidade do que por razões práticas. No entanto, acho útil ter um banco de dados com tabelas MyISAM para pesquisa de texto completo, para que eu possa executá-lo nos sites. Mantê-lo em um banco de dados separado com uma chave estrangeira para cada entrada torna mais fácil para qualquer outro desenvolvedor trabalhando no banco de dados ver o que está acontecendo.