Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é a diferença entre MyISAM e InnoDB?


As principais diferenças entre o InnoDB e o MyISAM ("com relação ao design de uma tabela ou banco de dados" sobre a qual você perguntou) são o suporte para "integridade referencial" e "transações".

Se você precisar que o banco de dados imponha restrições de chave estrangeira ou precise que o banco de dados suporte transações (ou seja, alterações feitas por duas ou mais operações DML tratadas como uma única unidade de trabalho, com todas as alterações aplicadas ou todas as alterações revertidas) então você escolheria o mecanismo InnoDB, já que esses recursos estão ausentes do mecanismo MyISAM.

Essas são as duas maiores diferenças. Outra grande diferença é a simultaneidade. Com MyISAM, uma instrução DML obterá um bloqueio exclusivo na tabela e, enquanto esse bloqueio for mantido, nenhuma outra sessão poderá executar uma operação SELECT ou DML na tabela.

Esses dois mecanismos específicos sobre os quais você perguntou (InnoDB e MyISAM) têm objetivos de design diferentes. O MySQL também possui outros mecanismos de armazenamento, com seus próprios objetivos de design.

Assim, ao escolher entre InnoDB e MyISAM, o primeiro passo é determinar se você precisa dos recursos fornecidos pelo InnoDB. Se não, então MyISAM está em consideração.

Uma discussão mais detalhada das diferenças é bastante impraticável (neste fórum) sem uma discussão mais detalhada do espaço do problema... , inserção, atualizações, requisitos de simultaneidade, recursos de replicação, etc.

O design lógico do banco de dados deve ser centrado na análise de dados e nos requisitos do usuário; a escolha de usar um banco de dados relacional viria mais tarde, e ainda mais tarde a escolha do MySQL como um sistema de gerenciamento de banco de dados relacional, e então a seleção de um mecanismo de armazenamento para cada tabela.