GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

MyISAM vs. InnoDB:Ein Vergleich

Einführung

Die Wahl der richtigen Speicher-Engine ist eine entscheidende strategische Entscheidung, die sich auf die zukünftige Entwicklung auswirkt. Entscheiden Sie sich abhängig von Ihrem Anwendungsfall zwischen zwei Hauptspeicher-Engines für MySQL – MyISAM oder InnoDB .

In diesem Artikel erfahren Sie die Hauptunterschiede zwischen MyISAM- und InnoDB-Speicher-Engines, wie Sie überprüfen können, welche Speicher-Engine Sie verwenden, und wie Sie sie konvertieren.

Voraussetzungen

  • Zugriff auf das Terminal/Befehlszeile
  • Eine funktionierende MySQL-Datenbank
  • phpMyAdmin installiert

Was sind MyISAM und InnoDB

MyISAM und InnoDB sind MySQL-Speicher-Engines. Speicher-Engines sind Datenbankverwaltungssystemkomponenten, die zum Bearbeiten von Daten aus einer Datenbank verwendet werden.

MyISAM

MyISAM steht für Indexed Sequential Access Method. Es war bis Dezember 2009 die Standardspeicher-Engine für MySQL. Mit der Veröffentlichung von MySQL 5.5 wurde MyISAM durch InnoDB ersetzt.

MyISAM basiert auf einem ISAM-Algorithmus, der Informationen aus großen Datensätzen schnell anzeigt. Es hat einen geringen Datenbedarf und eignet sich am besten für Data Warehousing und Webanwendungen.

InnoDB

InnoDB ist seit der Veröffentlichung von MySQL 5.5 die Standardspeicher-Engine für MySQL. Es eignet sich am besten für große Datenbanken, die relationale Daten enthalten.

InnoDB konzentriert sich auf hohe Zuverlässigkeit und Leistung, wodurch es sich hervorragend für Content-Management-Systeme eignet. Eine der bekanntesten Anwendungen von InnoDB ist die MediaWiki-Software, die Wikipedia antreibt.

Hauptunterschiede zwischen MyISAM und InnoDB

Werfen wir einen Blick auf die Hauptunterschiede zwischen MyISAM und InnoDB.

Funktionen MyISAM InnoDB
Typ Nicht transaktional Transaktional
Sperre Tabellensperre Sperren auf Zeilenebene
Fremdschlüssel Nein Ja
Tabellen-, Index- und Datenspeicherung Drei separate Dateien (.frm, .myd und .myi) Tablespace
Entwickelt für Geschwindigkeit Leistung
SÄURE Nein Ja

Speichermodultyp

Je nach Rollback-Methode gibt es zwei Arten von Speicher-Engines:

  • Nicht transaktional – Schreiboptionen müssen manuell zurückgesetzt werden.
  • Transaktional – Schreiboptionen werden automatisch zurückgesetzt, wenn sie nicht abgeschlossen werden.

Zusammenfassung: MyISAM ist eine nicht-transaktionale, während InnoDB eine transaktionale Speicher-Engine ist.

Sperren

Das Sperren von MySQL ist eine Option, die verhindert, dass zwei oder mehr Benutzer gleichzeitig Daten ändern. Der Benutzer kann keine Daten ändern, wenn die Sperroption aktiviert ist. Diese Funktion bewahrt die Gültigkeit aller Daten.

MyISAM verwendet Tabellensperre als Standard-Sperrmethode. Es ermöglicht einer einzelnen Sitzung, Tabellen gleichzeitig zu ändern. Tabellen werden immer in der gleichen Reihenfolge gesperrt. Die Tabellensperrmethode eignet sich am besten für schreibgeschützte Datenbanken, die nicht viel Speicher benötigen.

Beispiel für Tabellensperren:

Abfragen Spalte 1 Spalte 2 Spalte 3
Abfrage 1 (Aktualisierung) Schreiben Daten Daten
Abfrage 2 (warten) Daten Daten Daten
Abfrage 3 (warten) Daten Daten Daten

InnoDB verwendet Sperren auf Zeilenebene als Standard-Sperrmethode. Es unterstützt mehrere Sitzungen für ausgewählte Zeilen, indem es nur die Zeilen im Änderungsprozess sperrt. Zeilensperren eignen sich am besten für Datenbanken mit mehreren Benutzern. Der Nachteil ist, dass viel Speicher benötigt wird und mehr Zeit zum Abfragen und Ändern von Daten benötigt wird.

Beispiel für Sperren auf Zeilenebene:

Abfragen Spalte 1 Spalte 2 Spalte 3
Abfrage 1 (Aktualisierung) Schreiben Daten Daten
Abfrage 2 (auswählen) Lesen Daten Lesen
Abfrage 3 (Aktualisierung) Daten Schreiben Daten

Zusammenfassung: MyISAM verwendet Tabellensperren, während InnoDB Sperren auf Zeilenebene als Standardmethode verwendet.

Fremdschlüssel

Ein Fremdschlüssel ist eine Spalte (oder eine Sammlung von Spalten) in einer Tabelle, die mit einer Spalte (oder einer Sammlung von Spalten) in einer anderen Tabelle verknüpft ist. Es verhindert Aktionen, die die Verknüpfung zwischen Tabellen zerstören und die Möglichkeit, ungültige Daten einzufügen.

Zusammenfassung: MyISAM unterstützt die Fremdschlüsseloption nicht, während InnoDB dies tut.

Tabellen-, Index- und Datenspeicherung

Die beiden Speicher-Engines unterscheiden sich je nachdem, wie sie Dateien speichern.

MyISAM speichert Tabellen, Index und Daten in drei separaten Dateien:

  • .frm – Das Tabellenformat, das die Tabellenstruktur oder Tabellendefinition enthält.
  • .myi – Die Indexdatei mit Indizes für jede Tabelle.
  • .myd – Die Datendatei, die Daten jeder Tabelle enthält.

InnoDB speichert die Tabellenstruktur in der .frm Datei und hat einen tablespace wo es Indizes und Daten speichert.

Zusammenfassung: MyISAM speichert Daten in drei separaten Dateien, während InnoDB Daten in einer einzigen Datei speichert.

ACID-Unterstützung

SÄURE bezieht sich auf Datenbanktransaktionseigenschaften:Atomizität , Konsistenz , Isolation und Haltbarkeit . Es garantiert, dass die Transaktion im Falle eines Fehlers oder Systemausfalls abgeschlossen wird.

Weitere Informationen zu Datenbanktransaktionsmodellen finden Sie in unserem Artikel ACID vs. Base.

Zusammenfassung: MyISAM hat keine ACID-Unterstützung, während InnoDB volle ACID-Konformität hat.

So überprüfen Sie, ob Sie MyISAM oder InnoDB verwenden

Die Verwendung der richtigen Speicher-Engine ist für die Datenmanipulation unerlässlich. Die falsche Speicher-Engine kann zu Fehlern bei der Abfrage und reduzierter Geschwindigkeit und Leistung führen. Daher ist es wichtig zu prüfen, ob MyISAM oder InnoDB als Standardspeicher-Engine eingestellt sind.

Hinweis: Die MySQL-Leistungsoptimierung erfordert die Bewertung zahlreicher Faktoren. Für die beste Leistung empfehlen wir die Verwendung von InnoDB anstelle von MyISAM.

Über die Befehlszeile prüfen

Finden Sie Informationen über die standardmäßige Speicher-Engine, indem Sie die unten aufgeführten Schritte ausführen.

1. Öffnen Sie das Terminal und melden Sie sich bei der MySQL-Shell an. Zeigen Sie dann eine Liste der Datenbanken an:

SHOW DATABASES;

2. Suchen Sie die bevorzugte Datenbank in der Liste und wählen Sie sie aus:

USE database_name;

Das Terminal zeigt eine Bestätigungsmeldung über die Datenbankänderung an.


3. Verwenden Sie als Nächstes SHOW CREATE TABLE Befehl zum Anzeigen von Informationen über die Tabellen- und Speicher-Engine:

SHOW CREATE TABLE database_name.table_name;

Im folgenden Beispiel listet die Ausgabe InnoDB als Standardspeicher-Engine auf.

Hinweis: Ersetzen Sie database_name und table_name mit dem Namen Ihrer Datenbank und Tabelle.

Mit phpMyAdmin prüfen

Es gibt zwei Möglichkeiten, die Standardspeicher-Engine in phpMyAdmin zu überprüfen:

  • Aus einer Tabellenliste.
  • Durch Ausführen einer Abfrage.

Aus einer Tabellenliste

Sie können eine Tabellenliste verwenden, um herauszufinden, welche Tabellen MyISAM oder InnoDB als Standard-Speicher-Engine verwenden.

1. Öffnen Sie phpMyAdmin und wählen Sie die bevorzugte Datenbank aus der Liste aus.

2. In der Tabellenliste , suchen Sie den Typ Spalte, um die Arten von Speicher-Engines anzuzeigen. In unserem Beispiel die Kunden Tabelle verwendet MyISAM als Standard-Speicher-Engine.

Eine Abfrage ausführen

Eine andere Möglichkeit, eine Standardspeicher-Engine anzuzeigen, besteht darin, eine Abfrage auszuführen.

1. Melden Sie sich bei phpMyAdmin an und wählen Sie die bevorzugte Datenbank aus einer Datenbankliste aus.

2. Wählen Sie SQL aus Tab, um auf die Abfrageoptionen zuzugreifen.

3. Geben Sie den folgenden Befehl ein, um alle Tabellen anzuzeigen, die MyISAM als Speicher-Engine verwenden:

SELECT TABLE_NAME, ENGINE FROM information_schema. TABLES WHERE TABLE_SCHEMA = 'database_name' and ENGINE = 'myISAM'

4. Klicken Sie auf Los um eine Abfrage auszuführen.

Hinweis: Ersetzen Sie database_name mit dem Namen Ihrer Datenbank.

Die Ausgabe zeigt eine Liste aller Tabellen, die die MyISAM-Speicher-Engine enthalten.

Sie können denselben Befehl verwenden, um Datenbanken mit der InnoDB-Speicher-Engine zu finden. Ändern Sie die Abfrage, indem Sie ENGINE = 'myISAM' ersetzen mit ENGINE = 'InnoDB' .

So konvertieren Sie MyISAM und InnoDB

Probleme können auftreten, wenn Sie in alltäglichen Prozessen InnoDB verwenden, während eine ältere Tabelle MyISAM verwendet. Deshalb ist es wichtig zu wissen, wie man Tabellen konvertiert.

Speicher-Engine über Terminal konvertieren

Führen Sie ALTER TABLE aus Befehl in der MySQL-Shell, um die Speicher-Engine von MyISAM zu InnoDB und umgekehrt zu konvertieren.

  • Um InnoDB in MyISAM zu konvertieren, führen Sie Folgendes aus:
ALTER TABLE database_name.table_name ENGINE=MyISAM;
  • Um MyISAM in InnoDB umzuwandeln, führen Sie Folgendes aus:
ALTER TABLE database_name.table_name ENGINE=InnoDB;

Das Terminal druckt eine Bestätigungsmeldung aus.

Speicher-Engine mit phpMyAdmin konvertieren

Es gibt zwei Möglichkeiten, die Speicher-Engine in phpMyAdmin zu konvertieren:

  • Verwendung der Tabellenoperationen Menü.
  • Eine Abfrage ausführen.

Verwenden des Operationsmenüs

1. Wählen Sie die bevorzugte Datenbank aus einem Datenbankmenü aus.

2. Wählen Sie eine Tabelle aus, für die Sie die Speicher-Engine ändern möchten, und wählen Sie Mehr aus Dropdown-Menü.

3. Klicken Sie auf Vorgänge um auf das Menü zuzugreifen.


4. Suchen Sie die Speicher-Engine Einstellung in der Tabelle Optionen und klicken Sie auf die Speicher-Engine, um das Dropdown-Menü mit verschiedenen Speicher-Engines zu laden. Wählen Sie InnoDB aus aus der Liste und klicken Sie auf GO um die Änderung zu speichern.

Eine Abfrage ausführen

1. Greifen Sie auf SQL zu Kommandozentrale für die bevorzugte Datenbank.

2. Führen Sie ALTER TABLE aus Befehl in der MySQL-Shell, um die Speicher-Engine zu konvertieren.

Führen Sie zum Konvertieren in MyISAM Folgendes aus:

ALTER TABLE table_name ENGINE=MyISAM;

Führen Sie zum Konvertieren in InnoDB Folgendes aus:

ALTER TABLE.table_name ENGINE=InnoDB;

3. Klicken Sie auf GO Schaltfläche, um die Abfrage auszuführen.

Sie haben die Speicher-Engine erfolgreich konvertiert.


Cent OS
  1. Hadoop vs. Spark – Detaillierter Vergleich

  2. Was ist der Unterschied zwischen InnoDB und MyISAM?

  3. MySQL – Konvertieren in Tabellendaten für InnoDB

  4. Inkrementelle MySQL-Sicherung – Point-in-Time-Sicherung und -Wiederherstellung von InnoDB- und MyIsam-Datenbanken

  5. Prometheus vs. Zabbix:Vergleich der Netzwerküberwachungstools

Was ist eine Datenbank?

Big Data Server erklärt

SOAP vs. REST API:Kopf-an-Kopf-Vergleich

12 Datenintegrationstools überprüft

NoSQL-Datenmodellierungstechniken verstehen

Oracle Data Integrator (ODI) auf CentOS 8