Heim  >  Artikel  >  Datenbank  >  Welche sind die am häufigsten verwendeten Speicher-Engines in MySQL? Wie unterscheiden sie sich voneinander?

Welche sind die am häufigsten verwendeten Speicher-Engines in MySQL? Wie unterscheiden sie sich voneinander?

php是最好的语言
php是最好的语言Original
2018-08-03 16:41:483957Durchsuche

Die vier am häufigsten verwendeten Speicher-Engines in MySQL sind: MyISAM-Speicher-Engine, innoDB-Speicher-Engine, MEMORY-Speicher-Engine und ARCHIVE-Speicher-Engine. Dieser Artikel konzentriert sich auf diese vier Speicher-Engines und vergleicht diese vier Speicher-Engines abschließend.

Speicher-Engine in MySQL

1 Die Speicher-Engine ist eigentlich ein Zugriffsmechanismus für Datenbankdateien, wie man Daten speichert, wie man die gespeicherten Daten indiziert, wie man aktualisiert, Daten abfragt und andere technische Implementierungsmethoden.

2. Daten in MySQL werden mithilfe verschiedener Technologien in Dateien (oder Speicher) gespeichert. Jede dieser Technologien verwendet unterschiedliche Speichermechanismen, Indizierungstechniken und Sperrebenen und bietet letztendlich eine breite Palette unterschiedlicher Funktionen Fähigkeiten. In MySQL werden diese verschiedenen Technologien und die damit verbundenen unterstützenden Funktionen als Speicher-Engines bezeichnet.

2. Engines in MySQL anzeigen

1. Von MySQL unterstützte Speicher-Engines anzeigen und den MySQL-Standardspeicher abrufen Motor.

2. Variablen wie „% storage_engine“ anzeigen; // Die von einer bestimmten Tabelle verwendete Speicher-Engine anzeigen. Diese Standardspeicher-Engine wurde geändert!

4. Tabellenstatus aus der Datenbank anzeigen, wobei name="tablename" //Die von einer Tabelle in einer Datenbank verwendete Speicher-Engine genau anzeigen soll

3. Mehrere Speicher Engines, die häufig in

verwendet werden:

MyISAM Speicher-Engine:

Speicherort: MySQL Bei Verwendung der MyISAM-Speicher-Engine Datenbank Zu den Dateitypen gehören .frm, .MYD und .MYI. Der Standardspeicherort ist C:Documentsand SettingsAll UsersApplication DataMySQLMySQL Server 5.1data Speichermethode: MyISAM Diese Speicher-Engine unterstützt keine Transaktionen. Sie unterstützt keine Zeilen -Level-Sperren und unterstützt nur gleichzeitig eingefügte Tabellensperren. Sie wird hauptsächlich für die Auswahl bei hoher Auslastung verwendet. Indexmethode: MyISAM verwendet ebenfalls den B+Tree-Index, seine spezifische Implementierung unterscheidet sich jedoch geringfügig von der von Innodb.

Diese Engine basiert auf der ISAM-Datenbank-Engine. MyISAM bietet nicht nur eine Vielzahl von Funktionen wie Indizierung und Feldverwaltung, die in ISAM nicht verfügbar sind, sondern verwendet auch einen Tabellensperrmechanismus, um mehrere gleichzeitige Lese- und Schreibvorgänge zu optimieren , aber es erfordert eine häufige Ausführung des Befehls OPTIMIZE TABLE, um den durch den Aktualisierungsmechanismus verschwendeten Speicherplatz wiederherzustellen, da sonst die Fragmentierung zunimmt, was letztendlich die Datenzugriffsleistung beeinträchtigt. MyISAM verfügt außerdem über einige nützliche Erweiterungen, z. B. das MyISAMChk-Tool zum Reparieren von Datenbankdateien und das MyISAMPack-Tool zum Wiederherstellen verschwendeten Speicherplatzes. MyISAM legt Wert auf schnelle Lesevorgänge und wird hauptsächlich für Hochlast-Auswahlvorgänge verwendet. Dies ist möglicherweise auch der Hauptgrund, warum MySQL in der Webentwicklung so beliebt ist: Eine große Anzahl von Datenvorgängen, die in der Webentwicklung ausgeführt werden, sind Lesevorgänge, daher sind die meisten Anbieter virtueller Hosts und Internetplattformanbieter (Internet Presence Provider, IPP) erlauben nur die Verwendung des MyISAM-Formats.
MyISAM-Typtabellen unterstützen drei verschiedene Speicherstrukturen: statisch, dynamisch und komprimiert.
Statischer Typ: bedeutet, dass die Größe der definierten Tabellenspalte fest ist (dh sie enthält keine Datentypen variabler Länge wie xblob, xtext, varchar usw.), sodass MySQL automatisch das statische MyISAM verwendet Format. Die Leistung von Tabellen, die statische Formate verwenden, ist relativ hoch, da der Aufwand für die Verwaltung und den Zugriff auf in einem vorgegebenen Format gespeicherte Daten sehr gering ist. Diese hohe Leistung geht jedoch zu Lasten des Speicherplatzes, da sie zum Zeitpunkt der Definition festgelegt ist Egal wie groß der Wert in der Spalte ist, der Maximalwert hat Vorrang und nimmt den gesamten Platz ein.
Dynamischer Typ: Wenn eine Spalte (auch wenn nur eine Spalte vorhanden ist) als dynamisch definiert ist (xblob, xtext, varchar und andere Datentypen), verwendet MyISAM automatisch den dynamischen Typ, obwohl die Tabelle mit dynamischen Typen weniger belegt Platz als der Tabellenbereich des statischen Typs, führt jedoch zu einer geringeren Leistung, da bei einer Änderung des Inhalts eines Felds wahrscheinlich dessen Position verschoben werden muss, was zur Erzeugung von Fragmenten führt Fragmente nehmen ebenfalls zu und die Datenzugriffsleistung wird entsprechend reduziert.
Für das Problem der eingeschränkten Datenzugänglichkeit aufgrund der erhöhten Fragmentierung gibt es zwei Lösungen:
Verwenden Sie so viele statische Datentypen wie möglich.
Verwenden Sie häufig die Anweisung „table_name optimieren“, um die Tabelle zu defragmentieren und wiederherstellen. Speicherplatzverlust aufgrund von Aktualisierungen und Löschungen von Tabellendaten. Wenn die Speicher-Engine die Optimierung der Tabelle Tabellenname nicht unterstützt, können Sie die Daten sichern und neu laden, wodurch auch die Fragmentierung verringert werden kann sollte die MyISAM-Komprimierungstabelle verwenden, um den Speicherplatzverbrauch zu reduzieren.

Vor- und Nachteile: Der Vorteil von MyISAM besteht darin, dass es wenig Platz beansprucht und eine hohe Verarbeitungsgeschwindigkeit aufweist. Der Nachteil besteht darin, dass Transaktionsintegrität und Parallelität nicht unterstützt werden.

2. innoDBSpeicher-Engine

Speicherort: MySQL Wenn Sie die InnoDB-Speicher-Engine verwenden, umfassen die Datenbankdateitypen .frm, ibdata1 und .ibd. Es gibt zwei Speicherorte: .frm-Dateien Der Standardspeicherort ist C:Dokumente und EinstellungenAlle BenutzerAnwendungsdatenMySQLMySQL Server 5.1Daten Der Standardspeicherort für ibdata1- und .ibd-Dateien ist der Datenordner im MySQL-Installationsverzeichnis.

Die MySQL-Tabelle der innodb-Speicher-Engine bietet Transaktions-, Rollback- und Systemabsturz-Reparaturfunktionen sowie Transaktionssicherheit mit Multi-Version-Burst-Kontrolle.

innodb unterstützt Auto-Inkrement-Spalten (auto_inkrementieren). Der Wert einer Auto-Inkrement-Spalte darf nicht leer sein, wenn sie verwendet wird. Wie kann der vorhandene Wert automatisch gespeichert werden und beginnen, seinen Wert zu erhöhen? Wenn ja, ist er nicht so gut wie der aktuelle Wert. Wenn er immer noch groß ist, wird dieser Wert gespeichert.

Die innodb-Speicher-Engine unterstützt Fremdschlüssel. Die Tabelle, in der sich der Fremdschlüssel befindet, wird als untergeordnete Tabelle bezeichnet, und die Tabelle, von der er abhängt, wird als übergeordnete Tabelle bezeichnet.

Das Wichtigste an der innodb-Speicher-Engine ist, dass sie Transaktionen und transaktionsbezogene Funktionen unterstützt.

Die Innodb-Speicher-Engine unterstützt MVCC-Sperren auf Zeilenebene.

Der innodb-Speicher-Engine-Index verwendet B+Tree

Vor- und Nachteile: Der Vorteil von InnoDB besteht darin, dass es eine gute Transaktionsverarbeitung, Absturzreparaturfunktionen und Parallelitätskontrolle bietet. Der Nachteil besteht darin, dass die Lese- und Schreibeffizienz schlecht ist und der belegte Datenraum relativ groß ist.

3SPEICHERSpeicher-Engine

Die Speicher-Engine unterscheidet sich ein wenig von einigen der vorherigen Speicher-Engines. Sie verwendet die darin gespeicherten Daten, um Tabellen und so weiter zu erstellen Die Daten werden auch im Speicher gespeichert.

Jede Tabelle, die auf der Speicher-Engine basiert, entspricht tatsächlich einer Festplattendatei. Der Dateiname und der Tabellenname der Datei sind gleich und der Typ ist .frm. Diese Datei speichert nur die Struktur der Tabelle, und ihre Datendateien werden im Speicher gespeichert, was eine schnelle Datenverarbeitung fördert und die Verarbeitungsfähigkeiten der gesamten Tabelle verbessert.

Die Speicher-Engine verwendet standardmäßig einen Hash-Index (HASH), der schneller ist als die Verwendung von B-+Tree. Wenn Leser B-Tree verwenden möchten, können sie beim Erstellen darauf verweisen.

Speicher-Engine-Dateidaten werden im Speicher gespeichert. Wenn im mysqld-Prozess eine Ausnahme auftritt, verschwinden die Daten, wenn die Maschine neu gestartet oder heruntergefahren wird. Daher ist der Lebenszyklus von Tabellen in der Speicher-Engine sehr kurz und wird im Allgemeinen nur einmal verwendet.

4. ARCHIVSpeicher-Engine

Diese Speicher-Engine eignet sich sehr gut zum Speichern großer Mengen unabhängiger Daten als historische Aufzeichnungen. Im Gegensatz zu den beiden Engines InnoDB und MyISAM bietet ARCHIVE eine Komprimierungsfunktion und eine effiziente Einfügegeschwindigkeit. Diese Engine unterstützt jedoch keine Indizes, sodass die Abfrageleistung schlecht ist.

4. Vergleich von vier Speicher-Engines

InnoDB: unterstützt die Transaktionsverarbeitung, unterstützt Fremdschlüssel, unterstützt Absturzreparaturfunktionen und Parallelitätskontrolle. Wenn Sie relativ hohe Anforderungen an die Transaktionsintegrität stellen müssen (z. B. bei Banken) und eine Parallelitätskontrolle benötigen (z. B. beim Ticketverkauf), bietet die Wahl von InnoDB große Vorteile. Wenn Sie eine Datenbank benötigen, die häufig aktualisiert und gelöscht werden muss, können Sie sich auch für InnoDB entscheiden, da es Transaktions-Commit und -Rollback unterstützt.

MyISAM: Das Einfügen von Daten erfolgt schnell und der Platz- und Speicherverbrauch ist relativ gering. Wenn die Tabelle hauptsächlich zum Einfügen neuer Datensätze und zum Auslesen von Datensätzen verwendet wird, kann durch Auswahl von MyISAM eine hohe Verarbeitungseffizienz erzielt werden. Es kann auch verwendet werden, wenn die Anforderungen an Integrität und Parallelität der Anwendung relativ gering sind. Wenn die Datentabelle hauptsächlich zum Einfügen und Abfragen von Datensätzen verwendet wird, kann die MyISAM-Engine eine höhere Verarbeitungseffizienz bieten

SPEICHER: Alle Daten befinden sich im Speicher und die Datenverarbeitungsgeschwindigkeit ist hoch, aber die Sicherheit ist nicht hoch. Wenn Sie schnelle Lese- und Schreibgeschwindigkeiten und geringe Anforderungen an die Datensicherheit benötigen, können Sie sich für MEMOEY entscheiden. Es stellt Anforderungen an die Größe der Tabelle und kann keine zu große Tabelle erstellen. Daher wird dieser Datenbanktyp nur für relativ kleine Datenbanktabellen verwendet. Wenn Sie Daten nur vorübergehend speichern, die Datenmenge nicht groß ist und Sie keine hohe Datensicherheit benötigen, können Sie die Speicher-Engine zum Speichern der Daten im Speicher auswählen. Diese Engine wird in MySQL als temporäre Tabelle zum Speichern verwendet die Zwischenergebnisse der Abfrage

Wenn Sie nur INSERT- und SELECT-Vorgänge haben, können Sie „Archiv“ auswählen. Archiv unterstützt Einfügevorgänge mit hoher Parallelität, ist jedoch nicht transaktionssicher. Archive eignet sich sehr gut zum Speichern archivierter Daten. Sie können Archive

beispielsweise zum Aufzeichnen von Protokollinformationen verwenden. Beachten Sie, dass dieselbe Datenbank auch Tabellen von mehreren Speicher-Engines verwenden kann. Wenn eine Tabelle eine relativ hohe Transaktionsverarbeitung erfordert, können Sie InnoDB wählen. In dieser Datenbank können Tabellen mit höheren Abfrageanforderungen in MyISAM gespeichert werden. Wenn die Datenbank eine temporäre Tabelle zum Abfragen benötigt, können Sie die Speicher-Engine MEMORY wählen.

Verwandte Artikel:

9 Unterschiede zwischen der MySQL-Speicher-Engine MyISAM und InnoDB

MySQL-MySQL-Speicher-Engine-Unterschied

Ähnliche Videos:

Storage Engine-2017 Neuestes PHP-Video-Tutorial für Fortgeschrittene

Das obige ist der detaillierte Inhalt vonWelche sind die am häufigsten verwendeten Speicher-Engines in MySQL? Wie unterscheiden sie sich voneinander?. 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