MyISAM- und InnoDB-Tabellen in einer Datenbank

8

Ich habe eine Datenbank mit ungefähr 30 Tabellen und 5 Tabellen davon sind schreibintensiv.

Ich überlege

  1. Konvertieren Sie 5 schreibintensive Tabellen, um die InnoDB-Engine zu verwenden, und behalten Sie den Rest auf der MyISAM-Engine

  2. Konvertiere alle Tabellen, um die InnoDB-Engine zu verwenden.

Ich frage mich, welcher Ansatz besser ist?

Genauer gesagt

Der Grund, warum ich eine Tabelle auf MyISAM-Engine behalten möchte, ist, dass einige von ihnen ungefähr 1.000.000 Zeilen haben. Ich bin mir nicht sicher, wie lang es für Abfragen wie "SELECT COUNT (*)" in diesen Tabellen nach der Umwandlung in InnoDB sein wird.

Ich habe keinen Test gemacht. Ich bevorzuge es, einige Ratschläge von jedem von Ihnen zu bekommen, bevor ich den Wechsel starte.

    
jack 22.01.2010, 02:11
quelle

2 Antworten

12

Heutzutage verwende ich immer InnoDB, besonders in den schreibintensiven Tabellen, die Sie erwähnen, wo MyISAM unter der vollständigen Tabellensperrung leidet. Hier ist ein direkter Vergleich.

Gründe für die Verwendung von MyISAM:

  • Tabellen sind sehr schnell für ausgewählte schwere Lasten
  • Sperren auf Tabellenebene begrenzen ihre Skalierbarkeit für schreibintensive Mehrbenutzerumgebungen.
  • Kleinster Speicherplatzverbrauch
  • Volltextindex
  • Zusammengeführte und komprimierte Tabellen.

Gründe für die Verwendung von InnoDB:

  • ACID-Transaktionen
  • Sperren auf Zeilenebene
  • Konsistente Lesevorgänge - ermöglicht Ihnen das Erreichen exzellenter Lese-Schreib-Parallelität.
  • Primärschlüsselclustering - in einigen Fällen bietet es eine hervorragende Leistung.
  • Fremdschlüsselunterstützung.
  • Sowohl Index- als auch Datenseiten können zwischengespeichert werden.
  • Automatische Wiederherstellung nach einem Absturz - falls das Herunterfahren von MySQL unrein war, werden InnoDB-Tabellen immer noch - in den konsistenten Zustand zurückkehren - Keine Überprüfung / Reparatur wie bei MyISAM erforderlich.
  • Alle Updates müssen in InnoDB die transaktionale Engine durchlaufen, was oft die Performance im Vergleich zu nicht-transaktionalen Speicher-Engines verringert.

Das obige wurde aus diese Seite , die scheinbar nicht mehr funktioniert.

    
BrainCore 22.01.2010, 02:24
quelle
2

Vor- und Nachteile für jeden.

für (1) Vorteile: weniger Speicherplatzverbrauch, myisam viel schneller für Lese-schwere Zugriffsmuster

Nachteile: Speicher muss zwischen den innodb-Puffern und den myisam-Schlüsselpuffern geteilt werden. Innodb-Tische sind etwa 4x größer als ihre Myisam-Pendants. Programmatic Code muss für Deadlock-Handling angepasst werden.

merken Sie sich innodb auch, wenn Sie eine indizierte Spalte oder einen Primärschlüssel ändern.

    
user193565 22.01.2010 02:20
quelle

Tags und Links