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

InnoDB ou MyISAM - Por que não ambos?


Você pode ter tabelas MyISAM e InnoDB no mesmo banco de dados. O que você encontrará, porém, ao ter tabelas muito grandes é que o MyISAM causaria problemas de bloqueio de tabela. O que isso faz é bloquear toda a tabela para uma única transação, o que é muito ruim se você tiver muitos usuários usando seu site. Por exemplo, se você tiver um usuário pesquisando algo em seu site e a consulta demorar alguns minutos para ser concluída, nenhum outro usuário poderá usar seu site durante esse período porque toda a tabela está bloqueada.

O InnoDB, por outro lado, usa bloqueio em nível de linha, o que significa que essa linha é a única linha bloqueada da tabela durante uma transação. O InnoDB pode ser mais lento nas pesquisas porque não oferece pesquisa de texto completo como o MyISAM, mas isso não é um grande problema quando você o compara com o bloqueio em nível de tabela do MyISAM. Se você usa o InnoDB, como muitos sites grandes, pode usar um mecanismo de pesquisa do lado do servidor como Sphinx para pesquisas de texto completo. Ou você pode até usar uma tabela MyISAM para fazer a pesquisa como f00 sugerido. Eu pessoalmente recomendei o InnoDB principalmente por causa do recurso de bloqueio em nível de linha, mas também porque você pode implementar a pesquisa de texto completo de muitas outras maneiras.

Basicamente, se você tem um aplicativo de quadro de mensagens com muitas seleções, inserções e atualizações, o InnoDB é provavelmente a escolha mais apropriada. principalmente com conteúdo estático (ou mais leituras do que gravações), então você pode usar o MyISAM.