Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der Speicher-Engines InnoDB und MyISAM in MySQL

Detaillierte Erläuterung der Speicher-Engines InnoDB und MyISAM in MySQL

黄舟
黄舟Original
2017-09-21 11:05:151163Durchsuche

1. InnoDB-Speicher-Engine

InnoDB wird zur Standard-Speicher-Engine in MySQL5.5 . InnoDB ist eine Transaktionsspeicher-Engine, die für die Verarbeitung einer großen Anzahl kurzfristiger Transaktionen entwickelt wurde. Seine Leistung und die Funktionen zur automatischen Wiederherstellung nach einem Absturz machen es auch in nicht-transaktionalen Szenarien beliebt.

Sie können also sagen: „Es sei denn, Sie müssen einige Funktionen verwenden, die InnoDB nicht hat, und es gibt keine andere Möglichkeit, sie zu ersetzen, Sie sollten ihnen Vorrang geben “.

InnoDB-Daten werden im Tabellenbereich gespeichert, der die Daten und Indizes jeder Tabelle in separaten Dateien speichern kann.

InnoDB verwendet MVCC zur Unterstützung hoher Parallelität und implementiert vier Standardisolationsstufen. Die Standardstufe ist REPEATABLE READ (wiederholbares Lesen), und die Gap-Lock-Strategie verhindert Phantom-Lesevorgänge.

InnoDB basiert auf einem Clustered-Index. Der Clustered-Index bietet eine hohe Leistung für Primärschlüsselabfragen.

InnoDB unterstützt echte Hot-Backups, die über das XtraBackup-Tool erreicht werden können.

InnoDB hat viele interne Optimierungen vorgenommen, darunter vorhersehbares Vorauslesen beim Lesen von Daten von der Festplatte, die Möglichkeit, automatisch Hash-Indizes im Speicher zu erstellen, und Einfügungspuffer, die Einfügungsvorgänge beschleunigen können.

Anwendungsszenarien :

Erfordert Online-Hot-Backup

Die Datenmenge ist groß und erfordert eine schnelle Wiederherstellung nach einem Systemabsturz. Etwa die Auftragsabwicklung.

2.MyISAM-Speicher-Engine

Vor MySQL5.1 war MyISAM die Standard-Speicher-Engine. MyISAM unterstützt keine Transaktionen und Sperren auf Zeilenebene und sein größter Fehler besteht darin, dass es nach einem Absturz nicht sicher wiederhergestellt werden kann.

.MyISAM speichert Tabellen in zwei Dateien: Datendateien und Indexdateien.

MyISAM sperrt die gesamte Tabelle, fügt beim Lesen gemeinsame Sperren für alle erforderlichen Tabellen hinzu und fügt beim Schreiben exklusive Sperren hinzu. Wenn die Tabelle jedoch eine Leseabfrage hat, können Sie auch neue Datensätze in die Tabelle einfügen (gleichzeitiges Einfügen)

MyISAM kann Prüf- und Reparaturvorgänge manuell oder automatisch durchführen, es kann jedoch zu Datenverlust und dem Reparaturvorgang kommen ist sehr langsam.

Lange Felder wie BLOB und TEXT in MyISAM-Tabellen können auch Indizes basierend auf den ersten 500 Zeichen erstellen. MyISAM unterstützt auch die Volltextindizierung, einen Index, der auf Wortsegmentierung basiert und komplexe Abfragen unterstützen kann.

Wenn MyISAM beim Erstellen einer Tabelle DELAY_KEY_WRITE (verzögerte Aktualisierung des Indexschlüssels) angibt, wird der Index nach Abschluss jeder Änderung in den Schlüsselpuffer im Speicher geschrieben, wodurch der Schlüsselpuffer blockiert oder die Tabelle geschlossen wird Wird der entsprechende Indexblock auf die Festplatte geschrieben? Diese Methode kann die Schreibleistung erheblich verbessern. Allerdings können Indizes beschädigt werden, wenn die Datenbank oder der Host abstürzt.

Anwendungsszenarien :

Hauptsächlich Szenarien für SELECT- und INSERT-Vorgänge, wie z. B. allgemeine Protokollanwendungen.

                                                                         

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Speicher-Engines InnoDB und MyISAM in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn