2010-12-28 6 views
2

Ich entwickle ein Spiel in PHP und natürlich gibt es etwa 1000 verschiedene Tabellen, die ich erstellen muss, um verschiedene Arten von Daten zu speichern. Ich habe gehört, korrigiere mich, wenn ich falsch liege, dass InnoDB besser für Tabellen ist, die wegen der Zeilensperrung im Gegensatz zu MyISAMs Tabellensperrung viel aktualisiert werden. MyISAM ist jedoch schneller mit Auswahlen.Ist es eine gute Übung, verschiedene Tabellentypen in einer Datenbank mit MySQL zu haben?

Meine Frage ist, sollte ich nur bei einem Tischtyp bleiben, oder ist es gut, basierend auf den Bedürfnissen der Tabelle zu mischen und anzupassen?

Antwort

6

Meine Frage ist, sollte ich nur Stick mit einem Tabellentyp, oder ist es gut zu mischen und anzupassen die Bedürfnisse basierend auf des Tisches?

Es ist OK zu mischen.

MyISAM ist schneller für bestimmte Abfragen und unterstützt FULLTEXT und SPATIAL Indizes, während InnoDB Transaktions- und mehr gleichzeitige ist.

In einem Datenbank-Projekt, das ich derzeit konsultiere, gibt es eine Mischung von Tabellen für diese Zwecke.

2

Es hängt von Ihren Anforderungen ab. Wenn Sie Sperren auf Zeilenebene, Fremdschlüsseleinschränkungen usw. benötigen, sollten Sie sich für InnoDB entscheiden, aber wenn Sie es nicht benötigen, können Sie MyISAM verwenden. Im Allgemeinen ist InnoDB in den meisten Fällen der Weg, aber nichts hält Sie davon ab, mehrere Arten von Engines für Ihre Tabellen zu wählen, das ist Schönheit von MySQL.

+1

Vereinbar, verwenden Sie das Tool für den Job. – Brad

2

Ja, Sie können in derselben Datenbank MyISAM und InnoDB mischen ohne Probleme erforderlich, wenn

+0

Um die Meinung zu verwerfen, versuchen Sie MyISAM für Tabellen zu verwenden, die selten zum Einfügen/Löschen von Daten verwendet werden, während Sie innodb für solche verwenden, die häufig Daten aktualisieren. Es wird die tatsächlichen Daten sicher machen und die Verarbeitung für den Rest der Datenbank beschleunigen. – Samnan

0

Während Sie Tabellen mischen können, würde ich ganz bei InnoDB bleiben. Während MyISAM für einige Abfragen schneller sein kann, ist InnoDB normalerweise schneller, wenn es richtig eingestellt ist. Wenn Sie nach Primärschlüssel abfragen, wird InnoDB MyISAM beschleunigen, da InnoDB Daten in der Primärschlüsselreihenfolge speichert. MyISAM ist möglicherweise schneller für sekundäre Indizes.

MyISAM unterstützt keine Transaktionen, und wenn Sie 1000 Tabellen haben, werden Sie wahrscheinlich mehrere Tabellen als Teil einer Operation aktualisieren, und alle diese Aktualisierungen sollten innerhalb einer Transaktion durchgeführt werden (oder auf größere Probleme vorbereitet sein) wenn Nebenläufigkeit ein Problem wird, wenn Ihr Spiel beschäftigt ist oder Ihre Datenbank zurückbleibt!).

Das Festhalten mit einem Tabellentyp erleichtert auch die Speicherverwaltung auf dem Datenbankcomputer. InnoDB erhält dedizierten RAM für das Caching, während MyISAM auf dem Dateisystemcache des Betriebssystems beruht.

Mit MyISAM für die Volltextsuche auf jeder Art von geschäftigen Website wird Sie Trauer verursachen. Verwenden Sie stattdessen Sphinx Search.

Verwandte Themen