MySQL wählt die richtige Speicher-Engine

MySQL wählt die richtige Speicher-Engine

Wenn es um Datenbanken geht, ist eine der am häufigsten gestellten Fragen, wie man in MySQL eine Speicher-Engine auswählt, die den aktuellen Geschäftsanforderungen entspricht. MySQL unterstützt viele Speicher-Engines. Welche sind das also und wie kann man sie elegant nutzen?

Gründe für die Teilung des Motors

Im Dateisystem speichert MySQL jede Datenbank (auch Schema genannt) als Unterverzeichnis unter dem Datenverzeichnis. Beim Erstellen einer Tabelle erstellt MySQL eine frm-Datei mit demselben Namen wie die Tabelle im Datenbankunterverzeichnis, um die Tabellendefinition zu speichern. Wenn Sie beispielsweise eine Tabelle mit dem Namen „DebugTable“ erstellen, speichert MySQL die Tabellendefinition in der Datei DebugTable.frm.

Da MySQL zum Speichern von Datenbank- und Tabellendefinitionen Dateisystemverzeichnisse und -dateien verwendet, ist die Groß-/Kleinschreibung plattformabhängig. Auf Windows-Systemen wird bei Groß- und Kleinschreibung nicht zwischen Groß- und Kleinschreibung unterschieden; auf Unix-ähnlichen Systemen hingegen schon. Verschiedene Speicher-Engines speichern Daten und Indizes auf unterschiedliche Weise, aber die Tabellendefinition wird in der MySQL-Serviceschicht wk einheitlich gehandhabt.

Support-Engines anzeigen

Um herauszufinden, welche Engines in MySQL unterstützt werden, können Sie den folgenden Befehl verwenden:

Motoren anzeigen;

Die Ergebnisse sind wie folgt (MySQL-Version: Ver 8.0.19):

mysql> Engines anzeigen;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Kommentar | Transaktionen | XA | Speicherpunkte |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Föderierte MySQL-Speicher-Engine | NULL | NULL | NULL |
| SPEICHER | JA | Hash-basiert, im Speicher abgelegt, nützlich für temporäre Tabellen | NEIN | NEIN | NEIN |
| InnoDB | STANDARD | Unterstützt Transaktionen, Zeilensperren und Fremdschlüssel | JA | JA | JA |
| PERFORMANCE_SCHEMA | JA | Leistungsschema | NEIN | NEIN | NEIN |
| MyISAM | JA | MyISAM-Speicher-Engine | NEIN | NEIN | NEIN |
| MRG_MYISAM | JA | Sammlung identischer MyISAM-Tabellen | NEIN | NEIN | NEIN |
| BLACKHOLE | JA | /dev/null-Speicher-Engine (alles, was Sie hineinschreiben, verschwindet) | NEIN | NEIN | NEIN |
| CSV | JA | CSV-Speicher-Engine | NEIN | NEIN | NEIN |
| ARCHIV | JA | Archivspeicher-Engine | NEIN | NEIN | NEIN |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 Zeilen im Satz (0,00 Sek.)

Klassifizierung von Speicher-Engines

MySQL-Speicher-Engines werden in MyISAM, InnoDB, Memory, Merge usw. unterteilt. Die unterstützten Engines sind in der obigen Tabelle aufgeführt, aber die am häufigsten verwendeten Engines sind MyISAM und InnoDB. Die folgende Tabelle vergleicht die oben genannten Speicher-Engines:

Unterschiede zwischen MyISAM und InnoDB

Der Hauptunterschied zwischen den beiden Typen besteht darin, dass InnoDB Transaktionen sowie Fremdschlüssel- und Zeilensperren unterstützt.

  1. InnoDB kann Transaktionsprotokolle verwenden, um Datenfehler wiederherzustellen, die durch Programmabstürze oder unerwartete Beendigungen verursacht wurden. Wenn MyISAM jedoch auf einen Fehler stößt, muss es einen vollständigen Scan durchführen, bevor der Index neu erstellt oder Fehler korrigiert werden können, die nicht auf die Festplatte geschrieben wurden.
  2. Die Reparaturzeit von InnoDB ist im Allgemeinen fest, aber die Reparaturzeit von MyISAM ist proportional zur Datenmenge.
  3. Relativ gesehen wird InnoDB mit zunehmender Datenmenge eine bessere Stabilität aufweisen.
  4. MyISAM muss sich bei der Verwaltung von Lese- und Schreibcaches auf das Betriebssystem verlassen, während InnoDB über einen eigenen Verwaltungsmechanismus für Lese- und Schreibcaches verfügt. (InnoDB übergibt die geänderten Datenseiten nicht sofort an das Betriebssystem.) Daher ist der Datenzugriff von InnoDB in einigen Fällen effizienter als der von MyISAM.
  5. InnoDB unterstützt derzeit nicht die von MyISAM bereitgestellten Komprimierungs- und knappen Zeilenformate und verbraucht daher viel Festplatte und Cache.
  6. Wenn der Vorgang vollständig mit ACID (Transaktionen) kompatibel ist, führt InnoDB zwar automatisch mehrere Verbindungen zusammen, jede Transaktion muss jedoch trotzdem mindestens einmal auf die Festplatte geschrieben werden. Daher führt dies bei einigen Festplatten oder Festplattenarrays zu einer Transaktionsverarbeitungsgrenze von 200 Mal pro Sekunde. Wenn Sie eine höhere Leistung erzielen und die Transaktionsintegrität aufrechterhalten möchten, müssen Sie Festplatten-Caching und Batterie-Backup verwenden. Natürlich stellt InnoDB auch mehrere Modi mit geringerer Auswirkung auf die Leistung bereit, diese Modi verringern jedoch auch die Integrität der Transaktionen. MyISAM hat dieses Problem nicht, aber das liegt nicht daran, dass es fortgeschrittener ist, sondern einfach daran, dass es keine Transaktionen unterstützt.

Anwendungsszenario

  • MyISAM verwaltet nicht transaktionale Tabellen. Es bietet Hochgeschwindigkeitsspeicherung und -abruf sowie Volltextsuchfunktionen. Wenn Ihre Anwendung eine große Anzahl von SELECT-Abfragen ausführen muss, ist MyISAM die bessere Wahl.
  • InnoDB ist für Anwendungen zur Transaktionsverarbeitung konzipiert und verfügt über viele Funktionen, einschließlich ACID-Transaktionsunterstützung. Wenn in der Anwendung eine große Anzahl von INSERT- oder UPDATE-Operationen ausgeführt werden müssen, sollte InnoDB verwendet werden, um die Leistung gleichzeitiger Operationen mehrerer Benutzer zu verbessern.

Oben sind die Details zur Auswahl der MySQL-Speicher-Engine aufgeführt. Weitere Informationen zur MySQL-Speicher-Engine finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Erste Schritte mit der Ausführungs-Engine von SQL Server
  • Vor- und Nachteile gängiger MySQL-Speicher-Engines
  • Ändern Sie die MySQL-Datenbank-Engine in InnoDB
  • Kenntnisse über die MySQL Memory-Speicher-Engine
  • Detaillierte Erklärung der Speicher-Engine in MySQL
  • Lassen Sie uns über die Speicher-Engine in MySQL sprechen
  • Einstellen der Engine MyISAM/InnoDB beim Erstellen einer Datentabelle in MySQL
  • Beschreiben Sie kurz die MySQL InnoDB-Speicher-Engine
  • So schreiben Sie Ihre eigene SQL-Ausführungs-Engine

<<:  Verwendung des Linux-Datumsbefehls

>>:  js zur Realisierung von Login- und Registrierungsfunktionen

Artikel empfehlen

CnBlogs - Teilen im benutzerdefinierten Blogstil

Nachdem ich die halbe Nacht daran gearbeitet hatt...

Schreiben Sie ein React-ähnliches Framework von Grund auf

Kürzlich habe ich im Internet den Artikel „Build ...

JavaScript-Puzzlespiel

In diesem Artikelbeispiel wird der spezifische Ja...

Tipps zum Escapen von HTML-Texten

Heute habe ich auf CSDN einen kleinen Trick zum Es...

So wählen Sie den richtigen MySQL-Datums-/Uhrzeittyp zum Speichern Ihrer Zeit

Beim Erstellen einer Datenbank und Schreiben eine...

Detaillierte Erläuterung der Nginx-Prozessverwaltungs- und Neuladeprinzipien

Prozessstrukturdiagramm Nginx ist eine Multiproze...

Der Unterschied zwischen JS-Pre-Parsing und Variablen-Promotion im Web-Interview

Inhaltsverzeichnis Was ist eine Voranalyse? Der U...

Was ist COLLATE in MYSQL?

Vorwort Führen Sie den Befehl show create table &...

Implementierung des Pycharm-Installationstutorials auf Ubuntu 18.04

Methode 1: Pycharm herunterladen und installieren...

MySQL-Export ganzer oder einzelner Tabellendaten

Exportieren einer einzelnen Tabelle mysqldump -u ...