it-swarm.com.de

Was ist das beste Linux-Dateisystem für MySQL (InnoDB)?

Ich habe versucht, mit MySQL InnoDB nach Benchmarks für die Leistung verschiedener Dateisysteme zu suchen, konnte aber keine finden.

Meine Datenbank-Workload ist das typische webbasierte OLTP, etwa 90% lesen, 10% schreiben. Zufällige E/A.

Welches der gängigen Dateisysteme wie ext3, ext4, xfs, jfs, Reiserfs, Reiser4 usw. ist Ihrer Meinung nach das beste für MySQL?

48
Continuation

Wie sehr schätzen Sie die Daten?

Im Ernst, jedes Dateisystem hat seine eigenen Kompromisse. Bevor ich weiter gehe, bin ich ein großer Fan von XFS und Reiser, obwohl ich oft Ext3 verwende. Es gibt hier also keine wirkliche Verzerrung des Dateisystems, nur um Sie wissen zu lassen ...

Wenn das Dateisystem für Sie kaum mehr als ein Container ist, wählen Sie alles, was Ihnen die besten Zugriffszeiten bietet.

Wenn die Daten einen signifikanten Wert haben, sollten Sie XFS vermeiden. Warum? Denn wenn es einen Teil einer aufgezeichneten Datei nicht wiederherstellen kann werden die Blöcke auf Null gesetzt und make Die Daten können nicht wiederhergestellt werden. Dieses Problem ist in Linux Kernel 2.6.22 behoben .

ReiserFS ist ein großartiges Dateisystem, vorausgesetzt, dass es niemals schwer abstürzt . Die Journalwiederherstellung funktioniert einwandfrei. Wenn Sie jedoch aus irgendeinem Grund Ihre Paritionsinformationen verlieren oder die Kernblöcke des Dateisystems weggeblasen werden, kann es zu Problemen kommen, wenn sich mehrere ReiserFS-Partitionen auf einer Festplatte befinden - da der Wiederherstellungsmechanismus im Grunde durchsucht die gesamte Festplatte Sektor für Sektor und sucht nach dem, was sie "denkt", als Start des Dateisystems . Wenn Sie drei Partitionen mit ReiserFS haben, aber nur eine durchgebrannt ist, können Sie sich das Chaos vorstellen, das dadurch entsteht, wenn der Wiederherstellungsprozess ein Frankenstein-Durcheinander aus den beiden anderen Systemen zusammenfügt ...

Ext3 ist "langsam", in einer "Ich habe 32.000 Dateien und es braucht Zeit, um sie alle zu finden, die ls laufen" irgendwie. Wenn Sie überall Tausende kleiner temporärer Tische haben, werden Sie ein bisschen Trauer haben. Neuere Versionen enthalten jetzt eine Indexoption, die das Durchsuchen von Verzeichnissen drastisch reduziert, aber dennoch schmerzhaft sein kann.

Ich habe JFS noch nie benutzt. Ich kann nur kommentieren, dass jede Rezension, die ich jemals gelesen habe, etwas in der Art von "solide, aber nicht das schnellste Kind auf dem Block" war. Es könnte eine Untersuchung wert sein.

Genug der Nachteile, schauen wir uns die Vorteile an:

XFS:

  • schreit mit riesigen Dateien, schnelle Erholungszeit
  • sehr schnelle Verzeichnissuche
  • Grundelemente zum Einfrieren und Auftauen des Dateisystems zum Dumping

ReiserFS:

  • Sehr optimaler Zugriff auf kleine Dateien
  • Packt mehrere kleine Dateien in dieselben Blöcke, wodurch Speicherplatz im Dateisystem gespart wird
  • schnelle Wiederherstellung, konkurriert mit XFS-Wiederherstellungszeiten

Ext3:

  • Bewährt, basierend auf gut getestetem Ext2-Code
  • Viele Werkzeuge, um damit zu arbeiten
  • Kann zur Wiederherstellung als Ext2 zur Wiederherstellung neu montiert werden
  • Kann sowohl verkleinert als auch erweitert werden (andere Dateisysteme können nur erweitert werden)
  • Neueste Versionen können "live" erweitert werden (wenn Sie so gewagt sind)

Sie sehen, jeder hat seine eigenen Macken. Die Frage ist, welche ist für Sie am wenigsten eigenartig?

44
Avery Payne

Es kann auch erwähnenswert sein, dass Sie InnoDB ohne Dateisystem ausführen und die Leistung ohne Dateisystem-Overhead verbessern können. Ich bin mir nicht sicher, ob ich es empfehlen würde, aber ich habe es zuvor ohne Probleme verwendet.

InnoDB Raw Devices

Wenn Sie zu 90% lesen und zu 10% schreiben, sollten Sie die Portierung auf MyISAM in Betracht ziehen, um eine bessere Leseleistung zu erzielen, es sei denn, Sie benötigen die Transaktionsfähigkeit von InnoDB.

13
Xorlev

Die Antworten hier sind stark veraltet und müssen aktualisiert werden, da dies in den Google-Ergebnissen angezeigt wird.

Für Produktionsumgebungen XFS. Jedes Mal. XFS ist aufgezeichnet und nicht blockierend. Stellen Sie sicher, dass Sie die folgenden Variablen für eine moderne (2011/2012) MySQL-Datenbank haben, die InnoDB in der Produktion verwendet:

innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1 # an ACID requirement
sync_binlog = 1 # more ACID
innodb_flush_method = O_DIRECT

Verwenden Sie weder EXT3 noch EXT4. Eines Tages wird BTRFS dort ankommen.

EXT3 und vielleicht EXT4 werden auf Inode-Ebene gesperrt, nicht intelligent!

Quellen: - www.mysqlperformanceblog.com - http://dev.mysql.com/doc/internals/en/index.html - MySQL-Interna verstehen von Sasha Pachev - https://www.facebook.com/note.php?note_id=101502109016109 - http://oss.sgi.com/projects/xfs/training/ - Einige Swing-Kits, Versuch und Irrtum.

EDIT: Ein Update. EXT4 scheint ab Mitte 2013 ziemlich gut abzuschneiden! BTRFS ist immer noch keine gute Option. Und RHEL macht XFS möglicherweise zum neuen Standarddateisystem. Verwenden Sie auch hier NICHT EXT3.

11
Mathnode

Die Kurzversion ist, dass eine Empfehlung, die MySQL auf Dateisystemen gemacht hat, XFS am nächsten kommt. Ext3 sollte jedoch ebenfalls in Ordnung sein. Ext4 verspricht eine nette Verbesserung, ist aber immer noch nicht ganz stabil, obwohl es vor dem sein sollte Jahresende.

Wenn Sie Cluster-Dateisysteme CXFS, OCFS2 und GFS ausführen, sollten alle in Ordnung sein.

Ich würde stark vor Reiser-Derivaten und JFS warnen, obwohl Nizza einst hauptsächlich von XFS und ext4 geschlagen wurde, die beide weiter verbreitet sind.

9
LapTop006

Es wird wahrscheinlich keinen großen Unterschied machen. Verwenden Sie die Standardeinstellung Ihrer Distribution, sofern diese ausreicht.

Verbringen Sie Ihre Mühe damit, andere Dinge zu optimieren - holen Sie sich genug RAM - besorgen Sie sich einen Raid-Controller, der nicht scheiße ist - und beheben Sie die lahme (ab) Nutzung der Datenbank durch die Anwendung (Hinweis: Dies ist in den meisten Fällen der Hauptschuldige, wenn dies noch nicht geschehen ist) getan).

Überlegen Sie sich jedoch genau, auf welches Dateisystem Sie Ihr mysql tmpdir setzen. Dies wirkt sich auf die Leistung aus, insbesondere bei Abfragen, die disk-basierte Dateisortierungen () ausführen (weitere Informationen finden Sie unter EXPLAIN).

Ich denke, ein Dateisystem, das eine verzögerte Zuweisung unterstützt, ist hier sehr praktisch, da Sie IO vollständig für kurzlebige Dateien vermeiden können, wenn genügend RAM vorhanden ist, um sie im Cache zu halten. XFS zum Beispiel macht sich überhaupt nicht die Mühe, Dateien zu schreiben, die gelöscht und geschlossen werden, bevor sie zugewiesen wurden.

Natürlich ist das Setzen eines tmpdir auf ein tmpfs aus Sicht der Leistung attraktiv, führt jedoch zu der Gefahr, dass der Speicherplatz erschöpft wird und Abfragen, die andernfalls erfolgreich wären (wenn jedoch temporäre Datenträgerdateien verwendet werden), fehlschlagen.

6
MarkR

Ich finde keine aktuellen Artikel mit Benchmark- "Roundups" unter MySQL, die auf verschiedenen Dateisystemen ausgeführt werden. Angesichts der von Ihnen beschriebenen Arbeitsbelastung bezweifle ich, dass die Fragmentierung auf Dateiebene ein großes Problem darstellen wird. Ohne einen formalen Benchmark kann ich nichts sagen, was Sie als maßgeblich ansehen sollten, aber mein Bauch sagt, dass jedes Dateisystem, das Sie oben erwähnt haben, ungefähr im gleichen Ballpark arbeiten wird (dh alle in der gleichen Größenordnung für Leistungszahlen). .

Die Datenbank führt die Show wirklich aus, da das Dateisystem nur große Bereiche verwaltet, auf die die Speicher-Engine zugreift.

Trotzdem wäre es interessant, mit all diesen Dateisystemen eine Leistungsübersicht zu erstellen. (Ich habe jedoch weniger als keine Begeisterung für MySQL, daher werde ich mich nicht darum kümmern. Das Benchmarking von Postgres, OTOH, könnte interessant sein ...)

5
Evan Anderson

IMHO sind die bemerkenswerten FSs für Linux verfügbar:

XFS (schlechte Lesegeschwindigkeit) schont die Systemressourcen und ist bei großen Dateien schnell, bei vielen kleinen Dateien jedoch schlecht.

ReiserFS (schlechte Schreibgeschwindigkeit) schont die Systemressourcen nicht sehr, funktioniert aber sehr gut mit vielen kleinen Dateien.

EXT3 liegt dazwischen und bietet eine akzeptable Leistung für alle Felder (der Grund, warum es als Standard Linux FS betrachtet wird).

Ich habe EXT4 noch nicht selbst verwendet, aber ich habe mich in einigen Benchmarks umgesehen, und ReiserFS scheint die beste Leistung in Bezug auf die Lesegeschwindigkeit zu haben, was für Sie am wichtigsten war.

Schauen Sie sich das an: ReserFS4 X Ext4 X Ext

Ich würde Ext3 wegen seiner Stabilität, Sicherheit und Reife empfehlen, aber wenn Ihnen die Lesegeschwindigkeit am wichtigsten ist, sollten Sie ReiserFS in Betracht ziehen.

Denken Sie daran, dass Sie auch die CPU-Auslastung, Stabilität und Sicherheit berücksichtigen sollten, bevor Sie sich für einen FS entscheiden.

Und natürlich ist das Erstellen eines Pilotprojekts, Testen und Benchmarking in Ihrer speziellen Umgebung immer der beste Weg, um festzustellen, was für Sie am besten funktioniert.

PS: Ich hätte mehr Benchmarks gepostet, aber ich kann nicht mehr als einen Link posten.

3
OldJim