Hallo Kalle,
Ich habe zwei strukturell gleiche Datenbanken „jobs“ und
„jobs2“. Einziger Unterschied: jobs hat MyISAM als Engine,
jobs2 InnoDB. Wenn ich in die (bis dato leere) jobs2-Tabelle
über „INSERT INTO jobs2 SELECT * FROM jobs“ haben beide exakt
die selbe Menge an Datensätzen.
Schaue ich jetzt aber ins Filesystem, ist jobs ca.
6,2 MB groß, jobs2 aber gerade mal
lächerliche 34 KB!!!
Wie ist das denn bitte möglich???
Wie das möglich ist lasse ich jetzt einfach mal den nächsten erklären, aber eigentlich habe ich gelernt, daß InnoDB den größeren Speicherbedarf hat, aber gut, vielleicht war das eben nur die Theorie.
Aber ich würde bei der Entscheidung InnoDB oder MyISAM den Speicherbedarf erst als letztes Kriterium heranziehen. InnoDB hat einige Möglichkeiten, die MyISAM nicht hat, z.B. Transaktionen, Foreign key constraints, Sperren auf row-Ebene usw. Wenn Du das brauchst ist der Speicherverbrauch egal.
Außerdem: Gibt es Performance-Unterschiede zwischen den beiden
Engines (gerade bei Tabellen mit über 100k Datansätzen)?
Ja, solche Funktionen bei InnoDB hat natürlich ihren Preis, d.h. ist InnoDB langsamer. Ob das spürbar wird, müsstest Du mal austesten.
Ein paar ausgeführte Tests zur Geschwindigkeit:
http://blog.kapsobor.de/archives/2006/09/18/myisam_v…
Noch mehr Kriterien gibts hier:
http://dev.mysql.com/tech-resources/articles/storage…
http://www.phpblogger.net/2007/03/17/myisam-oder-inn…
Viele Grüße
Marvin