QUOTE (Sascha Ahlers @ So 22.4.2007, 22:47)
QUOTE (jAuer @ So 22.4.2007, 19:14) [...] Standardmäßig ist ja mySql nicht unbedingt transaktionssicher. [...]
Das musst Du mir mal erklären, wie das gemeint ist..
Es gibt MyIsam und InnoDB als Tabellentypen.
http://dev.mysql.com/doc/refman/5.0/en/innodb-overview.html
QUOTE InnoDB provides MySQL with a transaction-safe (ACID compliant) storage engine that has commit, rollback, and crash recovery capabilities. InnoDB does locking on the row level and also provides an Oracle-style consistent non-locking read in SELECT statements.
Bei MyIsam fehlen die entsprechenden Aussagen. Die deutsche 4.0 - Hilfe schreibt das explizit (CHM-Datei, Kapitel 8):
QUOTE MySQL unterstützt zwei unterschiedliche Arten von Tabellen: transaktionssichere Tabellen (InnoDB und BDB) und nicht transaktionssichere Tabellen (HEAP, ISAM, MERGE und MyISAM).
Die Standardeinstellung nutzt MyIsam - während man bei Systemen wie dem MS-SqlServer gar nicht die Möglichkeit hat, auf die Transaktionssicherheit zu verzichten.
Edit (alle Zitate CHM, 5.4.1): Und die Wirkung ist in bezug auf die Sicherung fatal: Laut 4.0-Manual ist eine Read-Lock-Tabellensperre notwendig
QUOTE Um eine konsistente Datensicherung zu erhalten, machen Sie ein LOCK TABLES auf die relevanten Tabellen, gefolgt von FLUSH TABLES für die Tabellen. See Abschnitt 7.7.2, „LOCK TABLES/UNLOCK TABLES-Syntax“. See Abschnitt 5.5.3, „FLUSH-Syntax“. Sie brauchen lediglich eine Lesesperre (Read Lock); das erlaubt anderen Threads, die Tabellen weiterhin abzufragen, während Sie eine Kopie der Dateien im Datenbank-Verzeichnis machen.
Oder:
Sie können auch einfach alle Tabellendateien (*.frm-, *.MYD- und *.MYI-Dateien) kopieren, solange der Server nicht gerade etwas aktualisiert.
Das sind Dinge, um die muß ich mich (beim MS-SqlServer) nicht kümmern, da gibt es auch keine Performance-Probleme bei der Sicherung, während mySql ausdrücklich davor warnt:
QUOTE Wenn Sie bei der Datensicherung auf Ihrem System Performance-Probleme bekommen, können Sie diese lösen, indem Sie Replikation einrichten und die Datensicherungen auf dem Slave statt auf dem Master durchführen