Hi!
Hast du die verlinkten Stellen auch gelesen? Je ein Zitat vom ersten und zweiten Link:
Ja.
Und warum behauptest du dann, MySQL könne kein row-level locking, anstatt zwischen den Engines zu unterscheiden?
"MySQL uses table-level locking for MyISAM, MEMORY, and MERGE tables, and row-level locking for InnoDB tables."
Das war bekannt, dass InnoDB einiges besser macht, aber es ist eben nicht "die normale MySQL-Engine". Was macht denn InnoDB schlechter?
Darum ging es doch gar nicht, aber wenn du schon darauf ausweichen willst: Ich jedenfalls behaupte nicht, dass InnoDB schlechter sei. Für das typische Zielpublikum sind die Features einfach nicht notwendig. Und wenn du was "schlechteres" sehen willst: InnoDB kann keine Fulltext Search Indexes.
Es gibt aus dem Jahre 2008 (MySQL 5.0 als aktuelle Version) einen Vergleich zwischen MyISAM und InnoDB, der auch einen Benchmark zwischen beiden verlinkt. Da geht InnoDB in den meisten Fällen als schneller hervor. Allerdings wurde da nur Lesen getestet, und nicht, was praxisrelevanter wäre, Lese- und Schreiboperationen gemeinsam. InnoDB hat eine Menge mehr Features, aber die bekommt man nicht zu Nulltarif. Es ist ressourcenhungriger, zum Beispiel was den Festplattenzugriff und Speicherverbrauch anbelangt. Der Artikel ist von Mai 2004, also kann er nur MySQL 4.0 meinen, doch auch der erstverlinkte bestätigt das. Auch administrativ gibt es Unterschiede. MyISAM kann man nach einem read lock und einem Leeren der Puffer (flush tables) tabellenfein und am Stück kopieren. InnoDB kann man mehr oder weniger nur mit einem Dump sichern.
Sollte man nicht generell darauf umsteigen? Meine ganzen alten Projektchen sind alle noch mit MyISAM. Das einzige, was mir einfiele, wäre die Sicherbarkeit von MyISAM en Bloc. Da gibt es wohl bei InnoDB irgendwelche Probleme? Untersucht habe ich das aber noch nicht.
Ich gebe keine generellen Empfehlungen bei Dingen, die man sinnvollerweise nur individuell entscheiden kann. Wenn dir die Features von InnoDB zusagen und Eigenschaften wie Ressourcenhunger für dich keine Nachteile sind - nur zu. Bei schwachbrüstigen Maschinen oder wenn viele sich die Leistung teilen müssen, wird wohl MyISAM samt der bekannten Feature-Abstriche das Mittel der Wahl sein.
Derartige Aussagen (es wäre eine Designentscheidung) haben sie bei anderen Dingen auch schon gamcht, wenn sie noch nicht soweit waren, es gebacken zu bekommen ;-P
Ja und? Entwickelst du von Anfang an 100 Prozent funktionierende eierlegende Wollmichsäue? Auch du wirst beim ersten Entwurf Überlegungen machen, welche Features die Masse benötigt und welche nur Spezialisten brauchen, welche sich einfach und welche sich nur vergleichsweise aufwendig implementieren lassen. Und beim Implementieren hast auch du garantiert nicht die Erfahrung und das Können, alles effektiv und effizient erschaffen zu können.
Lo!