Mysql
 sql >> Base de données >  >> RDS >> Mysql

InnoDB ou MyISAM - Pourquoi pas les deux ?

Vous pouvez avoir les tables MyISAM et InnoDB dans la même base de données. Ce que vous trouverez cependant, lorsque vous avez de très grandes tables, c'est que MyISAM causerait des problèmes de verrouillage de table. En fin de compte, cela verrouille toute la table pour une seule transaction, ce qui est très mauvais si de nombreux utilisateurs utilisent votre site Web. Par exemple, si vous avez un utilisateur qui recherche quelque chose sur votre site et que la requête prend quelques minutes, aucun autre utilisateur ne pourra utiliser votre site pendant cette période car toute la table est verrouillée.

InnoDB, d'autre part, utilise le verrouillage au niveau de la ligne, ce qui signifie que cette ligne est la seule ligne verrouillée de la table lors d'une transaction. InnoDB peut être plus lent lors des recherches car il n'offre pas de recherche en texte intégral comme MyISAM, mais ce n'est pas un gros problème lorsque vous le comparez au verrouillage au niveau de la table de MyISAM. Si vous utilisez InnoDB, comme de nombreux grands sites, vous pouvez utiliser un moteur de recherche côté serveur comme Sphinx pour les recherches plein texte. Ou vous pouvez même utiliser une table MyISAM pour faire la recherche comme f00 suggéré. J'avais personnellement recommandé InnoDB principalement en raison de la fonctionnalité de verrouillage au niveau des lignes, mais aussi parce que vous pouvez implémenter la recherche en texte intégral de nombreuses autres manières.

Fondamentalement, si vous avez une application de messagerie avec de nombreuses sélections, insertions et mises à jour, InnoDB est probablement le choix généralement approprié. Mais si vous ne construisez pas quelque chose comme ça (ou toute autre chose avec des utilisateurs enregistrés) et que votre travail principalement avec du contenu statique (ou plus de lectures que d'écritures), alors vous pouvez utiliser MyISAM.