Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 14231|Antwort: 1

[Quelle] Der Unterschied zwischen engine=innodb und engine=myisam in mysql

[Link kopieren]
Veröffentlicht am 16.07.2017 11:04:57 | | |
1/ISAM

ISAM ist ein gut definierter und bewährter Ansatz zur Verwaltung von Datentabellen, der so konzipiert ist, dass die Datenbank viel häufiger abgefragt als aktualisiert wird. Daher führt ISAM Lesevorgänge schnell aus und beansprucht nicht viel Speicher und Speicherressourcen. Die beiden Hauptnachteile von ISAM sind, dass es keine Transaktionsverarbeitung unterstützt und nicht fehlertolerant ist: Wenn Ihre Festplatte abstürzt, können die Datendateien nicht wiederhergestellt werden. Wenn Sie ISAM für missionskritische Anwendungen verwenden, müssen Sie stets alle Ihre Echtzeitdaten sichern, und MySQL kann solche Backup-Anwendungen dank seiner Replikationsfunktion unterstützen.

2/InnoDB

Sie bietet eine Transaktionskontrollfunktion, die sicherstellt, dass eine Reihe von Befehlen erfolgreich ausgeführt wird oder dass bei einem Befehlsfehler das Ergebnis aller Befehle rückgängig gemacht wird; man kann sich vorstellen, dass die Transaktionssteuerung im E-Banking sehr wichtig ist. Unterstützung für COMMIT, ROLLBACK und andere Transaktionsfunktionen. Die neueste Version von MySQL plant bereits, die Unterstützung für BDB zugunsten von InnoDB zu entfernen.

MyIASM ist eine neue Version von IASM-Tabellen mit folgenden Erweiterungen:
Portabilität auf binärer Ebene.
NULL-Spaltenindex.
Es gibt weniger Fragmente für variable Zeilen als für ISAM-Tabellen.
Unterstützung für große Dateien.
Bessere Indexkompression.
Ist es besser, eine statistische Verteilung zu haben?
Besser und schneller auto_increment Verarbeitung.

Hier sind einige Details und spezifische Unterschiede in der Implementierung:

1. InnoDB unterstützt keine Indizes vom Typ FULLTEXT.
2. Tabellen werden in InnoDB nicht gespeichert
bestimmte Zeilen, das heißt, ausführen Select Count(*) aus
InnoDB scannt die gesamte Tabelle, um zu berechnen, wie viele Zeilen es gibt, aber MyISAM liest einfach die gespeicherten Zeilen aus. Beachte, dass wenn die Count(*)-Anweisung enthält
wobei die Bedingung ist, dass die Operation beider Tabellen gleich ist.
3. Für Felder AUTO_INCREMENT Typs muss der Index mit nur diesem Feld in InnoDB aufgenommen werden, aber in der MyISAM-Tabelle ist es möglich, einen föderierten Index mit anderen Feldern zu erstellen.
4.LÖSCHEN
FROM table erstellt InnoDB die Tabelle nicht wieder, sondern löscht sie Zeile für Zeile.
5. LADETABELLE AUS
Die MASTER-Operation funktioniert für InnoDB nicht, die Lösung besteht darin, die InnoDB-Tabelle zuerst in die MyISAM-Tabelle zu ändern, die Daten zu importieren und dann in die InnoDB-Tabelle zu wechseln, aber sie ist nicht auf Tabellen anwendbar, die zusätzliche InnoDB-Funktionen (wie Fremdschlüssel) verwenden.

Außerdem ist die Zeilensperre einer InnoDB-Tabelle nicht absolut; wenn MySQL den zu scannenden Umfang beim Ausführen einer SQL-Anweisung nicht bestimmen kann, sperrt die InnoDB-Tabelle auch die gesamte Tabelle, wie z. B. Update
Tabellenmenge num=1 wobei Name wie "a%"

Keine Tabelle ist allmächtig, nur durch die Wahl des passenden Tabellentyps für den Geschäftstyp können wir die Leistungsvorteile von MySQL maximieren.

MySQL
Wenn der Administrator eine Datenbank erstellt, setzt die Tabelle standardmäßig den InnoDB-Typ.

InnoDB, MyISAM
Was ist der Unterschied zwischen den beiden Typen: Der MyISAM-Typ unterstützt keine fortgeschrittene Verarbeitung wie Transaktionsverarbeitung, während der InnoDB-Typ dies tut.
Tabellen des MyISAM-Typs betonen die Leistung, die mehrere Grade schneller ist als der InnoDB-Typ, aber keine transaktionale Unterstützung bietet, während InnoDB fortschrittliche Datenbankfunktionen wie transaktionale Unterstützung, Fremdschlüssel usw. bietet.

Binärdateien vom Typ MyISAM können zwischen verschiedenen Betriebssystemen migriert werden. Das heißt, es kann direkt vom Windows-System auf das Linux-System kopiert werden.

Ändern Sie den Motortyp der Tabelle:

ALTER
TABLE Tablename ENGINE = MyISAM ;

MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed
Sequentielle Zugriffsmethode
Sie ist die Standardmethode zur Speicherung von Datensätzen und Dateien. Im Vergleich zu anderen Speicher-Engines verfügt MyISAM über die meisten Werkzeuge zur Überprüfung und Reparatur von Tabellen.
MyISAM-Tabellen können komprimiert werden und unterstützen die Volltextsuche. Sie sind nicht transaktionssicher und unterstützen keine Fremdschlüssel. Wenn etwas rückgängig gemacht wird, führt das zu einem unvollständigen Rollback und ist nicht atomar. Wenn eine große Anzahl von Hinrichtungen durchgeführt wird
TheSELECT, MyISAM ist die bessere Wahl.

InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,

Bei InnoDB-Typen, die Dinge unterstützen, ist der Hauptgrund für die Geschwindigkeit, dass die Standardeinstellung AUTOCOMMIT aktiviert ist und das Programm BEGIN nicht explizit aufruft
Starte eine Transaktion, was zu einem automatischen Commit für jede Einfügung führt, was die Geschwindigkeit erheblich beeinträchtigt. Du kannst Start aufrufen, bevor SQL ausgeführt wird, und mehrere SQL-Formulare bilden eine Sache (selbst wenn Autocommit ausgeführt wird)
kann auch eingeschaltet werden), was die Leistung erheblich verbessert.

1. Sehen Sie sich die Tabelleninformationen an, einschließlich des verwendeten Engine-Typs, Zeichenkodierung, Tabellenstruktur usw

Benutze diesen Befehl

MySQL>
Zeigen, Tabelle erstellen, T1; --t1 ist der Tabellenname

2.
Folgender Befehl kann ausgeführt werden, um nicht-transaktionale Tabellen in Transaktionen umzuschalten (Daten gehen nicht verloren), innodb-Tabellen sind sicherer als Myisam-Tabellen:
Alter-Tabelle T1
type=innodb; --t1 ist der Tabellenname

3.
Die Innodb-Tabelle kann nicht mit dem Reparaturtabellen-Befehl und myisamchk -r table_name werden
Aber du kannst eine Prüftabelle verwenden
t1 und mysqlcheck [OPTIONS] Datenbank [Tabellen]

4.
Die folgenden Parameter wurden der Kommandozeile hinzugefügt, um die MySQL-Datenbank zu starten und alle neu veröffentlichten MySQL-Datentabellen standardmäßig auf Transaktionen zu setzen (
Es wirkt sich nur auf die create-Anweisung aus. )
--default-table-type=InnoDB

5.
Das vorübergehende Ändern des Standardtabellentyps kann erfolgen durch:
set table_type=InnoDB;

MyISAM
Vorteile: hohe Geschwindigkeit, weniger Speicherplatz; Die Festplattennutzung einer Datenbank oder Tabelle kann entweder durch Überprüfung der Größe der entsprechenden Datei (des Ordners) durch das Betriebssystem oder durch die Verwendung der SQL-Anweisung SHOW TABLE STATUS ermittelt werden.
Nachteile: Kein Datenintegritätsmechanismus, also keine Unterstützung für Transaktionen und Fremdschlüssel

InnoDB
Vorteile: Unterstützung von Transaktionen und Fremdschlüsseln sowie vollständiger Datenintegritätsmechanismus. Sie können SHOW TABLE STATUS verwenden, um die Festplattenbelegung einer Bibliothek oder Tabelle zu überprüfen
Nachteile: ultralangsame Geschwindigkeit, großer Speicherplatz; Alle Bibliotheken werden in einer (üblicherweise) oder mehreren Dateien gespeichert, und das Betriebssystem kann nicht bestimmen, wie viel Speicherplatz eine Bibliothek oder Tabelle hat

BDB
Vorteile: Transaktionen unterstützen, keine Fremdschlüssel, da auf Basis der Transaktionsunterstützung Fremdschlüssel indirekt auf der Clientseite der Datenbank implementiert werden können (die Serverseite des Endkunden, wie PHP) sein kann, sodass die Datenintegrität weiterhin gewährleistet ist;
Nachteile: langsame Geschwindigkeit, hohe Festplattenauslastung; Sie können die Speicherplatzbelegung einer Datenbank oder Tabelle nicht über SHOW TABLE STATUS abfragen. Das Betriebssystem kann die Größe des entsprechenden Ordners der Bibliothek oder der entsprechenden Datei der Tabelle verstehen, aber da die BDB-Tabelle immer eine Logdatei erzeugen muss und die tatsächliche Festplattenbelegung die Logdatei einschließen sollte, ist die Größe einer Bibliothek oder Tabelle immer kleiner als der tatsächlich vom Betriebssystem beanlegte Speicherplatz.




Vorhergehend:Die Feldtypattribute der MySQL-Tabelle werden ausführlich erklärt
Nächster:php-Datenbankzugriffstool Medoo
 Vermieter| Veröffentlicht am 16.07.2017 11:09:29 |
//更改引擎
alter table table name engine = MyISAM;

Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com