Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71

MySQL-Tabellentypen: Ein Vergleich

MySQL bietet verschiedene Tabellentypen bzw. -formate. Als Standard wird MyISAM verwendet, aber daneben gibt es auch InnoDB, BDB, MemoryDB und andere. Dieser Artikel soll die Eigenschaften der verschiedenen Systeme vorstellen und sie miteinander vergleichen.

Grundlegend wird in transaktionsbasierte (z.B. InnoDB, BDB, Gemini) und nicht-transaktionsbasierte Formate (z.B. MyISAM, ISAM, HEAP, MERGE) unterschieden. Transaktionen sind untrennbare Blöcke.
Ein gern genommenes Beispiel ist die Überweisung bei einer Bank:

UPDATE konten SET saldo=saldo-100 WHERE ktonr=1234;
  UPDATE banken SET saldo=saldo-100 WHERE filialnr=(SELECT filialnr FROM konten WHERE ktonr=1234);
  UPDATE konten SET saldo=saldo+100 WHERE ktonr=4322;
  UPDATE banken SET saldo=saldo+100 WHERE filialnr=(SELECT filialnr FROM konten WHERE ktonr=4322);

Es sollten entweder alle Befehle ausgeführt werden oder gar keiner (nicht auszudenken, was passieren würde, wenn der Server nach dem ersten oder zweiten Befehl einen Fehler bekommt – dann ist das Geld im Nirwana verschwunden). Deshalb umschließt man diesen Block mit BEGIN und COMMIT;. Dann wird der DB-Zustand nur gespeichert, wenn das COMMIT erreicht wird – also alle Befehle ausgeführt wurden.

Nun aber zu den einzelnen Formaten:
MyISAM (stellvertetend für nicht-transaktionsorientierte Tabellentypen)

InnoDB (stellvertetend für transaktionsorientierte Tabellentypen)

Memory-Engine (Heap-Tabellen)
Diese Tabellen existieren vollständig im RAM. Das ist gleichzeitig Fluch und Segen:

Das sind die wichtigsten Unterschiede. Natürlich gibt es auch noch andere Tabellentypen, aber in der Praxis kommen eigentlich nur diese drei zum Einsatz (was MySQL angeht).

Fazit:
InnoDB, Gemini und BDB sollten dann eingesetzt werden, wenn die Konsistenz der Datenbank auf keinen Fall gefährdet werden darf. Die Daten können nach einem Absturz von MySQL automatisch wiederhergestellt werden. Zugleich stellen Transaktionen sicher, dass nicht mehrere Anwender simultan Datensätze verändern, und sichern damit die Integrität der Datenbank.
Verknüpfte Tabellen verweisen nur auf tatsächlich existierende Datensätze und nicht ins Leere. Transaktions-sichere Tabellen sind aber langsamer als das am häufigsten verwendete MyISAM-Format.
Noch schneller als diese sind Heap Tables, die vollständig im Speicher residieren, aber nach einem Absturz oder Reboot natürlich verschwunden sind und sich deshalb nur für eine temporäre Datenhaltung eigen.