Diferença entre innodb e myisam
Há muita discussão sobre isso on-line, mas grande parte é datada, então vou em frente e faço minhas próprias:
- Transações ACID: InnoDB sim, MyISAM não.
- Simultaneidade: O InnoDB suporta um nível bastante profundo de simultaneidade, enquanto o MyISAM é gravador único com vários leitores.
- Bloqueio: InnoDB: no nível da linha. MyISAM, no nível da tabela.
- Recuperação de falha: o sistema de transações do InnoDB garante a recuperação de transações COMMITted e gravadas após uma falha. MyISAM: um tanto imprevisível e confuso.
- Buffer pool: InnoDB: índices e dados da tabela base gerenciados internamente pelo gerenciador de armazenamento. MyISAM: os índices são gerenciados pelo gerenciador de armazenamento, enquanto os dados da tabela base são apenas arquivos de disco. Isso tem implicações de desempenho bastante grandes - geralmente a favor do InnoDB.
- Chave Primária: O InnoDB é organizado por índice, o que significa que sua estrutura de tabela base é efetivamente um índice primário organizado em torno da chave primária da tabela. O MyISAM usa um índice secundário para implementar chaves primárias, o que significa que o acesso a elas é mais lento.
- Nas versões mais recentes do MySQL, recursos como índices de texto completo são suportados nos dois mecanismos de armazenamento.
- As versões anteriores do InnoDB costumavam ser mais lentas que o MyISAM, mas hoje em dia o InnoDB é muito mais rápido em geral.
Intangivel:
- O InnoDB está sendo mantido e aprimorado ativamente, enquanto o MyISAM tem pouco ou nenhum novo desenvolvimento.
- O InnoDB é o mecanismo de armazenamento padrão do MySQL há cerca de nove anos (desde 5.5. )
A única vez que eu usaria o MyISAM hoje em dia é se eu tivesse uma tabela temporária ou de trabalho que não coubesse na RAM. O InnoDB seria a escolha se você realmente precisar manter seus dados.