Seit jeher [
1], [
2] liebäugele ich damit anstatt
MyISAM die
InnoDB als Storage Engine für unsere MySQL Datenbanken zu verwenden. Seit jeher nahm ich mir aber nie die Zeit einen solchen Wechsel mit Benchmarks zu belegen. Vor allem in Kombination mit
Helma (siehe meine
Seminar Notizen) scheint InnoDB die bessere Wahl zu sein.
Bernhard stellte erst kürzlich ausführliche Benchmark-Ergebnisse für die von ihm betreute Helma-basierende Site club3k.at online:
http://www.bluelife.at/wiki/Benchmarks:MyISAM_vs_InnoDB
Und kam für seine Daten und für seine Queries zu dem Ergebnis, dass
InnoDB bis zu 10% besser performt.
Ich bin nun ganz analog zu Bernhard vorgegangen, und hab mir ebenfalls mittels des MySQL-Query-Logs die tatsächlichen Queries zusammengesammelt, und hab diese dann auf eine MySQL-Datenbank mit den Echt-Daten von twoday.net (mittlerweile rund 3GB) mittels
mysqlslap abgefeuert. Bei meinem Setup hab ich aber die UPDATE-Statements zu den SELECTs hinzugenommen um auch Schreib-Operationen zu berücksichtigen.
Die ganzen Details und Schwierigkeiten der Benchmarks lasse ich hier mal weg, und reduziere mein Ergebniss auf folgende zwei Aussagen:
* Mittels eines "
Optimize Table" konnte ich eine Verbesserung der MyISAM-Datenbank von 16% erzielen. Ergo sollten wir vielleicht öfters die Tabellen optimieren lassen.
* Durch den Wechsel aller DB-Tabellen auf InnoDB konnte ich (im Vgl zur optimierten MyISAM-DB) eine
Verbesserung von fast 40% erzielen (vorausgesetzt dass ich dem innodb_buffer_pool_size genügend Speicher zuweise).
Nicht schlecht, oder? Sprich, eventuell werden wir also doch bald umsteigen. Argumente gäbe es jetzt genügend.
michi - 08.Nov 2007 10:35 -
technisches