Heim  >  Artikel  >  Datenbank  >  Analyse häufig verwendeter Speicher-Engines in MySQL

Analyse häufig verwendeter Speicher-Engines in MySQL

不言
不言nach vorne
2018-11-23 17:25:142629Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Analyse häufig verwendeter Speicher-Engines. Ich hoffe, dass er für Freunde hilfreich ist.

MyISAM: Jedes MyISAM wird als drei Dateien auf der Festplatte gespeichert. Der Name der ersten Datei beginnt mit dem Namen der Tabelle und die Erweiterung gibt den Dateityp an. .frm-Dateien speichern Tabellendefinitionen. Die Erweiterung der Datendatei ist .MYD

(MYData). Die Erweiterung der Indexdatei ist .MYI (MYIndex).

MyISAM ist die Standard-Datenbank-Engine von MySQL (vor Version 5.5), die gegenüber der frühen ISAM (Indexed Sequential Access Method: Indexed Sequential Access Method) verbessert wurde. Obwohl die Leistung hervorragend ist, hat es einen Nachteil: Es unterstützt keine Transaktionsverarbeitung.

InnoDB ist eine der Datenbank-Engines von MySQL und einer der von MySQL AB veröffentlichten Binärstandards. Im Vergleich zu herkömmlichem ISAM und MyISAM besteht das größte Merkmal von InnoDB darin, dass es Transaktionen unterstützt.

Was ist der Unterschied zwischen MyISAM und InnoDB? Die Zusammenfassung lautet wie folgt:

1. Speicherstruktur

MyISAM: Jedes MyISAM wird als drei Dateien auf der Festplatte gespeichert. Der Name der ersten Datei beginnt mit dem Namen der Tabelle und die Erweiterung gibt den Dateityp an. .frm-Dateien speichern Tabellendefinitionen. Die Datendateierweiterung ist .MYD (MYData). Die Erweiterung der Indexdatei ist .MYI (MYIndex).

InnoDB: Alle Tabellen werden in derselben Datendatei (oder mehreren Dateien oder unabhängigen Tabellenbereichsdateien) gespeichert. Die Größe der InnoDB-Tabelle ist im Allgemeinen nur durch die Größe der Betriebssystemdatei begrenzt.

2. Speicherplatz

MyISAM: kann komprimiert werden und hat weniger Speicherplatz. Unterstützt drei verschiedene Speicherformate: statische Tabelle (Standard, aber beachten Sie, dass am Ende der Daten keine Leerzeichen stehen dürfen, da diese entfernt werden), dynamische Tabelle und komprimierte Tabelle.

InnoDB: erfordert mehr Arbeitsspeicher und Speicherplatz, es richtet einen eigenen dedizierten Pufferpool im Hauptspeicher zum Zwischenspeichern von Daten und Indizes ein.

3. Portabilität, Sicherung und Wiederherstellung

MyISAM: Daten werden in Form von Dateien gespeichert und sind daher sehr praktisch für die plattformübergreifende Datenübertragung. Während der Sicherung und Wiederherstellung können Sie Vorgänge für eine Tabelle einzeln ausführen.

InnoDB: Zu den kostenlosen Lösungen gehören das Kopieren von Datendateien, das Sichern von Binlog oder die Verwendung von mysqldump, was relativ mühsam ist, wenn das Datenvolumen Dutzende Gigabyte erreicht.

4. Transaktionsunterstützung

MyISAM: Der Schwerpunkt liegt auf der Leistung, jede Abfrage ist atomar und ihre Ausführungszeit ist schneller als beim InnoDB-Typ, dies ist jedoch nicht der Fall Bereitstellung von Transaktionsunterstützung.

InnoDB: Bietet Transaktionsunterstützung, Fremdschlüssel und andere erweiterte Datenbankfunktionen. Transaktionssichere (ACID-konforme) Tabellen mit Commit-, Rollback- und Crash-Recovery-Funktionen.

5. AUTO_INCREMENT

MyISAM: Sie können einen gemeinsamen Index mit anderen Feldern erstellen. Die automatische Wachstumsspalte der Engine muss ein Index sein. Wenn es sich um einen kombinierten Index handelt, muss die automatische Wachstumsspalte nicht die erste Spalte sein. Sie kann nach den vorherigen Spalten sortiert und dann erhöht werden.

InnoDB: InnoDB muss einen Index nur mit diesem Feld enthalten. Die automatisch wachsende Spalte der Engine muss ein Index sein, und wenn es sich um einen zusammengesetzten Index handelt, muss sie auch die erste Spalte des zusammengesetzten Index sein.

6. Unterschiede bei Tabellensperren

MyISAM: Unterstützt nur Sperren auf Tabellenebene. Wenn Benutzer Myisam-Tabellen ausführen, sind dies alle Anweisungen Wird der Tabelle automatisch zugewiesen. Wenn die gesperrte Tabelle die Parallelität beim Einfügen erfüllt, können neue Daten am Ende der Tabelle eingefügt werden.

InnoDB: Die Unterstützung von Transaktionen und Sperren auf Zeilenebene ist das größte Merkmal von innodb. Zeilensperren verbessern die Leistung gleichzeitiger Vorgänge mehrerer Benutzer erheblich. Die Zeilensperre von InnoDB gilt jedoch nur für den Primärschlüssel von WHERE. Jeder Nicht-Primärschlüssel WHERE sperrt die gesamte Tabelle.

7. Volltextindex

MyISAM: unterstützt Volltextindex vom Typ FULLTEXT

InnoDB: unterstützt keinen Volltextindex vom Typ FULLTEXT , aber innodb kann es verwenden Das Sphinx-Plug-In unterstützt die Volltextindizierung und der Effekt ist besser.

8. Tabellen-Primärschlüssel

MyISAM: Ermöglicht die Existenz von Tabellen ohne Indizes und Primärschlüssel.

InnoDB: Wenn kein Primärschlüssel oder ein nicht leerer eindeutiger Indexsatz vorhanden ist, wird automatisch ein 6-Byte-Primärschlüssel generiert (für den Benutzer unsichtbar). Die Daten sind Teil des Hauptindex Zusätzlicher Index speichert den Hauptindexwert.

9. Die spezifische Anzahl der Zeilen in der Tabelle

MyISAM: Speichert die Gesamtzahl der Zeilen in der Tabelle, wenn Sie count() aus der Tabelle auswählen. Der Wert wird direkt entnommen.

InnoDB: Die Gesamtzahl der Zeilen in der Tabelle wird nicht gespeichert. Wenn Sie „select count()“ aus der Tabelle verwenden, wird die gesamte Tabelle durchlaufen, was jedoch nach dem Hinzufügen der Wehe viel Geld verbraucht Bedingung, Myisam und Innodb verarbeiten es auf die gleiche Weise.

10. CURD-Operation

MyISAM: Wenn Sie eine große Anzahl von SELECTs ausführen, ist MyISAM die bessere Wahl.

InnoDB: Wenn Ihre Daten häufig INSERT oder UPDATE ausführen, sollten Sie aus Leistungsgründen eine InnoDB-Tabelle verwenden. DELETE bietet eine bessere Leistung als InnoDB, aber wenn DELETE FROM table verwendet wird, erstellt InnoDB die Tabelle nicht neu, sondern löscht sie Zeile für Zeile. Wenn Sie eine Tabelle mit einer großen Datenmenge in InnoDB löschen möchten, ist dies am besten um den Befehl „Tabelle abschneiden“ zu verwenden.

11. Fremdschlüssel

MyISAM: Nicht unterstützt

InnoDB: Unterstützt

Durch die obige Analyse kann dies grundsätzlich der Fall sein InnoDB wird als Ersatz für die MyISAM-Engine verwendet. In tatsächlichen Anwendungen können Sie jedoch die spezifische Situation selbst berücksichtigen.

Das obige ist der detaillierte Inhalt vonAnalyse häufig verwendeter Speicher-Engines in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen