Sie können sowohl MyISAM- als auch InnoDB-Tabellen in derselben Datenbank haben. Was Sie jedoch feststellen werden, wenn MyISAM sehr große Tabellen hat, würde dies zu Problemen mit der Tabellensperre führen. Letztendlich sperrt es die gesamte Tabelle für eine einzelne Transaktion, was sehr schlimm ist, wenn viele Benutzer Ihre Website verwenden. Wenn Sie z. B. einen Nutzer auf Ihrer Website nach etwas suchen lassen und die Abfrage in wenigen Minuten abgeschlossen ist, können keine anderen Nutzer Ihre Website in diesem Zeitraum verwenden, da die gesamte Tabelle gesperrt ist.
InnoDB verwendet andererseits das Sperren auf Zeilenebene, dh diese Zeile ist die einzige Zeile, die während einer Transaktion aus der Tabelle gesperrt wird. InnoDB kann bei Suchvorgängen langsamer sein, da es keine Volltextsuche wie MyISAM bietet, aber das ist kein großes Problem, wenn Sie es mit dem Sperren von MyISAM auf Tabellenebene vergleichen. Wenn Sie InnoDB wie viele große Websites verwenden, können Sie eine serverseitige Suchmaschine wie Sphinx für Volltextsuchen verwenden. Oder Sie könnten sogar eine MyISAM-Tabelle verwenden, um die Suche wie f00
vorgeschlagen zu machen. Ich habe InnoDB persönlich vor allem wegen der Sperrfunktion auf Zeilenebene empfohlen, aber auch, weil Sie die Volltextsuche auf viele andere Arten implementieren können.
Grundsätzlich, wenn Sie eine Message Board-Anwendung mit vielen Selects, Einfügungen sowie Updates haben, ist InnoDB wahrscheinlich die allgemein richtige Wahl. Aber wenn Sie nicht so etwas (oder etwas anderes mit registrierten Benutzern) erstellen und hauptsächlich mit statischem Inhalt (oder mehr Lesevorgängen als Schreibvorgängen) arbeiten, können Sie MyISAM verwenden.
was ist ein Cluster-Primärschlüsselindex? http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html Warum sind geclusterte Primärschlüsselindizes besser als normale btree-Indizes? http://stackoverflow.com/questions/4419499/mysql-nosql-help-me-to-choose-the-right-one-on-a-/4421601#4421601 –