1. Änderungen in der Standard-Speicher-Engine von MySQL In Versionen vor MySQL 5.1 ist MyISAM die Standardsuchmaschine. Ab MySQL 5.5 und höher wird die Standardsuchmaschine auf InnoDB geändert. 2. Hauptfunktionen der Speicher-Engines MyISAM und InnoDB Die Funktionen der MyISAM-Speicher-Engine: Sperren auf Tabellenebene, keine Unterstützung für Transaktionen und Volltextindizes, wodurch sie für einige CMS-Content-Management-Systeme als Backend-Datenbanken geeignet ist. Die Tabellensperrstruktur reicht jedoch für Produktionssysteme mit hoher Parallelität und hoher Belastung nicht aus. Im Folgenden sind die Funktionen der MySQL 5.7 MyISAM-Speicher-Engine aufgeführt: Die Funktionen der InnoDB-Speicher-Engine sind: Zeilensperren, Transaktionssicherheit (ACID-Kompatibilität), Unterstützung für Fremdschlüssel und Unterstützung für Indizes vom Typ FULLTEXT (Indizes vom Typ FULLTEXT werden ab Version 5.6.4 unterstützt). Die InnoDB-Speicher-Engine bietet eine transaktionssichere Speicher-Engine mit Commit-, Rollback- und Crash-Recovery-Funktionen. InnoDB ist auf maximale Leistung bei der Verarbeitung großer Datenmengen ausgelegt. Seine CPU-Effizienz wird wahrscheinlich von keiner anderen festplattenbasierten relationalen Datenbank-Engine erreicht. Im Folgenden sind die Funktionen der MySQL 5.7 InnoDB-Speicher-Engine aufgeführt: Beachten: Die Zeilensperre der InnoDB-Tabelle ist nicht absolut. Wenn MySQL beim Ausführen einer SQL-Anweisung den zu scannenden Bereich nicht bestimmen kann, sperrt die InnoDB-Tabelle auch die gesamte Tabelle, z. B. Der Hauptunterschied zwischen den beiden Typen besteht darin, dass InnoDB Transaktionen, Fremdschlüssel und Zeilensperren unterstützt. MyISAM unterstützt dies nicht. Daher wird MyISAM oft einfach als nur für den Einsatz in kleinen Projekten geeignet angesehen. 3. MyISAM- und InnoDB-Leistungstest Die folgenden beiden Bilder sind die offiziellen Stresstestergebnisse von MyISAM und InnoDB Es ist ersichtlich, dass der Durchsatz von InnoDB mit zunehmender Anzahl von CPU-Kernen besser wird, während der Durchsatz von MyISAM nahezu unverändert bleibt. Offensichtlich verringert der Tabellensperrmechanismus von MyISAM den Lese- und Schreibdurchsatz. 4. Ob Transaktionen unterstützt werden MyISAM ist eine nicht transaktionale Engine, die es MySQL mit der MyISAM-Engine ermöglicht, Hochgeschwindigkeitsspeicherung und -abruf sowie Volltextsuchfunktionen bereitzustellen, wodurch es sich für Anwendungen mit häufigen Abfragen wie Data Warehouses eignet; InnoDB ist transaktionssicher; Transaktionen sind eine erweiterte Verarbeitungsmethode. Wenn beispielsweise beim Hinzufügen, Löschen oder Ändern von Spalten ein Fehler auftritt, kann die Transaktion zurückgesetzt und wiederhergestellt werden. Dies ist mit MyISAM jedoch nicht möglich. 5. Der Unterschied zwischen MyISAM und InnoDB in der Struktur (1) Jedes MyISAM wird in drei Dateien auf der Festplatte gespeichert:
(2) Festplattenbasierte Ressourcen sind die Datendatei des InnoDB-Tablespace und seine Protokolldatei. Die Größe der InnoDB-Tabelle wird nur durch die Größe der Betriebssystemdatei begrenzt, die im Allgemeinen 2 GB beträgt. 6. Erläuterung der MyISAM- und InnoDB-Tabellensperren und Zeilensperren MySQL-Sperren auf Tabellenebene haben zwei Modi: gemeinsame Lesesperre für die Tabelle (Table Read Lock) und exklusive Schreibsperre für die Tabelle (Table Write Lock). Was bedeutet das? Es bedeutet, dass beim Lesen einer MyISAM-Tabelle die Leseanforderungen anderer Benutzer für dieselbe Tabelle nicht blockiert werden, Schreibvorgänge für dieselbe Tabelle jedoch blockiert werden. Schreibvorgänge für die MyISAM-Tabelle blockieren wiederum die Lese- und Schreibvorgänge anderer Benutzer für dieselbe Tabelle. InnoDB-Zeilensperren werden durch das Sperren von Indexelementen implementiert, d. h. InnoDB verwendet Zeilensperren nur, wenn Daten über Indexbedingungen abgerufen werden, andernfalls verwendet es Tabellensperren! Sperren auf Zeilenebene verbrauchen bei jedem Sperrenerwerb und jeder Sperrenfreigabeoperation mehr Ressourcen als Tabellensperren. Wenn es zu einem Deadlock zwischen zwei InnoDB-Transaktionen kommt, wird die Anzahl der von jeder Transaktion betroffenen Zeilen berechnet und anschließend die Transaktion mit weniger Zeilen zurückgesetzt. Wenn InnoDB nicht am Sperrszenario beteiligt ist, kann InnoDB es nicht erkennen. Dies kann nur durch eine Sperrzeitüberschreitung gelöst werden. 7. Ob die bestimmte Anzahl von Zeilen in der Datenbanktabelle gespeichert werden soll InnoDB speichert nicht die genaue Anzahl der Zeilen in der Tabelle. Das heißt, wenn Beachten Sie, dass der Vorgang für beide Tabellen gleich ist, wenn 8. Wie man wählt MyISAM ist geeignet für:
InnoDB eignet sich für:
Beachten Sie, dass der Code zum Erstellen jeder Tabelle identisch ist, mit Ausnahme des TYPE-Parameters am Ende, der die Daten-Engine angibt. Weitere Unterschiede: 1. Für Felder vom Typ AUTO_INCREMENT muss InnoDB einen Index enthalten, der nur dieses Feld hat, aber in einer MyISAM-Tabelle kann ein gemeinsamer Index mit anderen Feldern erstellt werden. 2. Wenn DELETE FROM-Tabelle verwendet wird, erstellt InnoDB die Tabelle nicht neu, sondern löscht die Zeilen einzeln. 3. Die Operation LOAD TABLE FROMMASTER funktioniert nicht für InnoDB. Die Lösung besteht darin, die InnoDB-Tabelle zunächst in eine MyISAM-Tabelle umzuwandeln und sie nach dem Importieren der Daten wieder in eine InnoDB-Tabelle umzuwandeln. Dies gilt jedoch nicht für Tabellen, die zusätzliche InnoDB-Funktionen verwenden (z. B. Fremdschlüssel). 4. Die InnoDB-Speicher-Engine ist vollständig in den MySQL-Server integriert. Die InnoDB-Speicher-Engine verwaltet ihren eigenen Pufferpool zum Zwischenspeichern von Daten und Indizes im Hauptspeicher. 5. Für selbstinkrementierende Felder muss InnoDB einen Index nur für dieses Feld enthalten, aber es kann ein gemeinsamer Index mit anderen Feldern in einer MyISAM-Tabelle erstellt werden. 6. Beim Löschen der gesamten Tabelle löscht InnoDB die Zeilen einzeln, was sehr langsam ist. MyISAM wird die Tabelle neu erstellen. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an Das könnte Sie auch interessieren:
|
<<: Detailliertes Tutorial zur Installation von VirtualBox und Ubuntu 16.04 unter Windows
1. Fall Nehmen Sie alle Mitarbeiter, die nicht Fi...
Hintergrund Kürzlich fragten mich einige Freunde,...
In diesem Artikel wird der spezifische Code von j...
Microsoft IIS IIS (Internet Information Server) i...
Nginx unterstützt drei Möglichkeiten zum Konfigur...
In diesem Artikel werden MySQL-Duplikatsindizes u...
Das Folgende ist ein Balkendiagramm im Flex-Layou...
Inhaltsverzeichnis 1. Vorteile der Verwendung von...
Methode join(): verbindet alle Elemente eines Arr...
Wir müssen lediglich einen beliebigen Texteditor ö...
Inhaltsverzeichnis 1. Art von 2. Instanz von 3. K...
1. MySQL-Datenbank herunterladen und installieren...
Nach der Dekomprimierung der grünen Version von m...
In diesem Artikel möchten wir eine Sammlung von 2...
Inhaltsverzeichnis 1. Einleitung 2. Code-Implemen...