892 Stimmen

MyISAM gegenüber InnoDB

Ich arbeite an einem Projekt, bei dem viel in Datenbanken geschrieben wird, würde ich sagen ( 70% Beilagen und 30% Lesestoff ). Dieses Verhältnis würde auch Aktualisierungen einschließen, die ich als ein Lesen und ein Schreiben betrachte. Die Lesevorgänge können unsauber sein (z. B. benötige ich keine 100%ig genauen Informationen zum Zeitpunkt des Lesens).
Die betreffende Aufgabe wird über 1 Million Datenbanktransaktionen pro Stunde umfassen.

Ich habe eine Reihe von Sachen auf dem Web über die Unterschiede zwischen MyISAM und InnoDB gelesen, und MyISAM scheint wie die offensichtliche Wahl zu mir für die bestimmte Datenbank/Tabellen, die ich für diese Aufgabe verwenden werden. Nach dem, was ich zu lesen scheine, ist InnoDB gut, wenn Transaktionen benötigt werden, da Sperren auf Zeilenebene unterstützt wird.

Hat jemand Erfahrung mit dieser Art von Belastung (oder höher)? Ist MyISAM der richtige Weg?

14 Stimmen

Le MySQL-Leistungs-Blog ist eine großartige Quelle für diese Art von Dingen.

3 Stimmen

Dies hängt ein wenig davon ab, ob Ihr System OLTP- oder eher Datawarehouse-orientiert ist (wo die meisten Schreibvorgänge in großen Mengen erfolgen).

38 Stimmen

MyISAM unterstützt kein Row-Locking, keine Transaktionen, es unterstützt nicht einmal Fremdschlüssel... verdammt, da es keine SÄURE kann man kaum noch von einer richtigen Datenbank sprechen! Das ist der Grund, warum InnoDB seit MySQL 5.5 die Standard-Engine ist... aber, aus welchem Grund auch immer, ist MyISAM weiterhin die Standard-Engine für Tabellen, die mit PhpMyAdmin erstellt werden, so dass viele Amateur-Datenbanken seitdem auf MyISAM laufen.

5voto

yogman Punkte 3953

Meiner Erfahrung nach war MyISAM die bessere Wahl, solange man keine DELETEs, UPDATEs, eine Menge einzelner INSERTs, Transaktionen und Volltextindizierung durchführt. BTW, CHECK TABLE ist schrecklich. Wenn die Tabelle in Bezug auf die Anzahl der Zeilen älter wird, weiß man nicht, wann sie zu Ende ist.

4voto

user965748 Punkte 1979

Ich habe versucht, das Einfügen von Zufallsdaten in MyISAM- und InnoDB-Tabellen auszuführen. Das Ergebnis war ziemlich schockierend. MyISAM benötigte für das Einfügen von 1 Million Zeilen ein paar Sekunden weniger als InnoDB für nur 10 Tausend!

4voto

Gary Richardson Punkte 15543

Jede Anwendung hat ihr eigenes Leistungsprofil für die Nutzung einer Datenbank, und es ist wahrscheinlich, dass es sich im Laufe der Zeit ändert.

Das Beste, was Sie tun können, ist, Ihre Möglichkeiten zu testen. Der Wechsel zwischen MyISAM und InnoDB ist trivial. Laden Sie also einige Testdaten und lassen Sie jmeter auf Ihre Website los, um zu sehen, was passiert.

3voto

pfote Punkte 286

Myisam ist ein NOGO für diese Art von Arbeitsbelastung (Schreiben mit hoher Gleichzeitigkeit), ich habe nicht so viel Erfahrung mit innodb (ich habe es 3 Mal getestet und jedes Mal festgestellt, dass die Leistung mies war, aber es ist schon eine Weile her seit dem letzten Test) wenn Sie nicht gezwungen sind, mysql zu benutzen, sollten Sie postgres ausprobieren, da es mit gleichzeitigen Schreibvorgängen viel besser zurechtkommt

3voto

Light93 Punkte 882

Kurz gesagt, InnoDB ist gut, wenn Sie an etwas arbeiten, das eine zuverlässige Datenbank benötigt, die viele INSERT- und UPDATE-Anweisungen verarbeiten kann.

und MyISAM ist gut, wenn Sie eine Datenbank benötigen, die eher viele Lese- (SELECT) als Schreibanweisungen (INSERT und UPDATES) benötigt, wenn man bedenkt, dass es einen Nachteil bei der Tabellensperre gibt.

die Sie sich vielleicht ansehen möchten;
Vor- und Nachteile von InnoDB
Vor- und Nachteile von MyISAM

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X