MySQL MyISAM Rollback

Thomasio

Erfahrenes Mitglied
Ich habe vom Thema bis jetzt überhaupt keine Ahnung, also habe ich ganz unbedarft mal Google zum Thema befragt, aber da finde ich nur Widersprüche.
Von 5 Jahre alten Beiträgen auf der MySQL Seite die besagen, MyISAM unterstützt Rollback überhaupt nicht, samt Hinweis es sei ab Version 5.2 geplant gewesen aber wieder verworfen worden, bis zu Anleitungen, wie man eine Rollback Funktion selber machen kann, ohne interne Funktionen von MySQL zu bemühen.
Kurz gesagt, nach Google schaue ich noch dümmer als vorher.

Was ich gerne machen würde sieht etwa so aus:

Eine DB mit ca. 20 Tabellen, alle MyISAM.
Ein Script liest aus 3 davon und schreibt in 3 Andere, inkl. LOCK TABLES.
Dieses Script ist recht gross und es liest und schreibt so viele Einträge, dass es ca. 10 Sekunden braucht.
Jetzt würde ich gerne vorher den Zustand der 3 Schreib-Tabellen speichern, und bei Fehler dahin zurück gehen, Rollback halt.
Was ich dabei nicht verstehe ist:

1) Geht das überhaupt mit MyISAM und wenn ja, dann wie?
2) Wie funktioniert das grundsätzlich? Wenn die Verbindung zur DB mitten im Script verloren geht, kann ich ja via PHP nichts mehr machen, macht MySQL dann den Rollback automatisch?
 
Vielen Dank für den Link.
Soviel ich verstanden habe unterstützt MyISAM also auch in V5.6 kein Rollback.

Wenn ich jetzt noch wüsste, warum ich mich damals für MyISAM entschieden habe.
Ich kann mich dumpf erinnern, dass mit InnoDB irgendwas nicht ging, was ich brauche, aber das ist lange her.

Anders gefragt, gibt es irgendwo eine Liste der Vor- und Nachteile der verschiedenen Engines?
 
InnoDB kann keine Volltext-Suche. Das ist meistens der Grund, warum man MyISAM verwendet.

EDIT: Es gibt eine allgemeine Seite über alle Storage-Engines, die jemals in MySQL verfügbar waren oder noch sind:

http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html

Wenn man sich eine von denen raus pickt, kann man die Besonderheiten der Engine betrachten. Bspw. ist hier die Besonderheiten-Seite (Einschränkungen) für die mittlerweile nicht mehr unterstützt BDB: http://dev.mysql.com/doc/refman/5.0/en/bdb-restrictions.html
 
Zuletzt bearbeitet:
Zurück