Ich bin bereit, von MyISAM zu InnoDB zu wechseln, wollte aber wissen, ob es eine vollständige Liste der zu suchenden Dinge gibt? Ich habe zum Beispiel keine Liste erwähnt, in der erwähnt wird, dass das Ausführen DISABLE KEYS
einer InnoDB-Tabelle eine Warnung auslöst, mit Ausnahme der Handbuchseite für ALTER TABLE
. So etwas muss ich wissen, bevor ich konvertiere. Ich dachte, ich würde meine Fragen gut beantworten, aber anscheinend nicht.
11
Ich denke, das größte Problem wäre, dass innodb transaktional ist. Sie möchten wissen, ob die MySQL-Bibliotheken, die von Ihren Anwendungen verwendet werden, standardmäßig auto_commit verwenden oder nicht.
Python schreibt beispielsweise nicht automatisch fest. Dies bedeutet, wenn eine Anwendung unmittelbar vor dem Schließen der Verbindung eine Zeile einfügt, wird diese Einfügung jetzt zurückgesetzt, nachdem Sie zu innodb geändert haben. Das Python-Skript muss beispielsweise sicher sein, connection.commit () aufzurufen.
Ein weiterer Unterschied könnte in mehrzeiligen Einfügungen oder Aktualisierungen liegen. Betrachten Sie einen einzelnen mehrzeiligen Inser
Überlegen Sie, was passiert, wenn ein Fehler auftritt, z. B. eine eindeutige Schlüsselkollision in Zeile 3. Mit MyISAM wären die ersten beiden Zeilen geschrieben worden, unter innodb würden alle zu schreibenden Zeilen zurückgesetzt, so dass selbst bei einem solchen Fehler nichts geschrieben würde.
Mit innodb betreten Sie die Welt der Deadlocks. Diese sind nicht von Natur aus schlecht, es sei denn, sie treten mit einer solchen Häufigkeit auf, um zu verhindern, dass Arbeiten ausgeführt werden. Ihre Anwendungen müssen jedoch so codiert werden, dass sie Deadlocks antizipieren und angemessen behandeln (was höchstwahrscheinlich nur einen erneuten Versuch bedeutet).
Berücksichtigen Sie Speicher- / Speicherbeschränkungen. Innodb ist viel ressourcenintensiver als MyISAM. Wenn Sie über genügend RAM verfügen, um Ihre Pufferpools groß genug zu halten, um alle Ihre Tabellen aufzunehmen, sind Sie goldrichtig.
Suchen Sie nach Tabellen mit großen Primärschlüsseln. Die Clustered-Indizierung von Innodb bedeutet, dass jeder Sekundärindex eine weitere Kopie der PK der entsprechenden Zeile enthält. Wenn Sie 2 Sekundärindizes haben, bedeutet dies, dass jede Zeilen-PK dreimal gespeichert wird (PK + jeder Index). Wenn sich das pk über mehrere Spalten und große Datentypen erstreckt (z. B. char (N)), können Sie sehen, wie die Indexanforderungen unter innodb schnell explodieren können.
quelle