Quel est le meilleur système de fichiers Linux pour MySQL (InnoDB)?

48

Avec MySQL InnoDB, j’ai essayé de mesurer les performances de divers systèmes de fichiers, mais n’en ai trouvé aucun.

La charge de travail de ma base de données correspond au OLTP Web typique, environ 90% en lecture et 10% en écriture. IO aléatoire.

Parmi les systèmes de fichiers populaires tels que ext3, ext4, xfs, jfs, Reiserfs, Reiser4, etc., lequel est le meilleur pour MySQL?

Continuation
la source

Réponses:

44

Combien valorisez-vous les données?

Sérieusement, chaque système de fichiers a ses propres compromis. Avant d’aller beaucoup plus loin, je suis un grand fan de XFS et de Reiser, bien que j’utilise souvent Ext3. Donc, il n’ya pas vraiment de biais de système de fichiers à l’œuvre ici, je vous tiens au courant ...

Si le système de fichiers n’est pour vous qu’un conteneur, optez pour tout ce qui vous donne les meilleurs temps d’accès.

Si les données ont une valeur significative, vous voudrez éviter XFS. Pourquoi? En effet, s'il ne peut pas récupérer une partie d'un fichier journalisé, il met à zéro les blocs et rend les données irrécupérables. Ce problème est résolu dans Linux Kernel 2.6.22 .

ReiserFS est un excellent système de fichiers, à condition qu'il ne se bloque jamais . La récupération du journal fonctionne bien, mais si, pour une raison quelconque, vous perdez vos informations de partition, ou si les blocs principaux du système de fichiers sont détruits, vous risquez de perdre votre temps si des partitions multiples se trouvent sur un disque. En effet, le mécanisme de récupération analyse disque entier, secteur par secteur, à la recherche de ce qu’il "pense" comme étant le début du système de fichiers . Si vous avez trois partitions avec ReiserFS mais qu'une seule est détruite, vous pouvez imaginer le chaos que cela entraînera lorsque le processus de récupération assemble un désordre Frankenstein des deux autres systèmes ...

Ext3 est "lent", dans un "J'ai 32 000 fichiers et il faut du temps pour les trouver tous en cours d'exécution ls" un peu comme. Si vous allez avoir des milliers de petites tables temporaires partout, vous aurez un petit chagrin. Les versions les plus récentes incluent désormais une option d’index qui réduit considérablement le parcours du répertoire, mais qui peut être pénible

Je n'ai jamais utilisé JFS. Je ne peux que dire que toutes les critiques que j'ai lues ont quelque chose du style "solide, mais pas l'enfant le plus rapide du bloc". Cela peut mériter une enquête.

Assez des inconvénients, regardons les avantages:

XFS:

  • cris avec d'énormes fichiers, temps de récupération rapide
  • recherche de répertoire très rapide
  • Primitives pour geler et dégeler le système de fichiers en vue de son dumping

ReiserFS:

  • Accès extrêmement optimal aux petits fichiers
  • Compresse plusieurs petits fichiers dans les mêmes blocs, en économisant de l’espace dans le système de fichiers
  • récupération rapide, rivalise avec les temps de récupération XFS

Ext3:

  • Essayé et vrai, basé sur du code Ext2 bien testé
  • Beaucoup d'outils autour de travailler avec elle
  • Peut être ré-monté en tant que Ext2 dans un pincement pour la récupération
  • Peut être à la fois réduit et développé (les autres systèmes de fichiers ne peuvent l'être que)
  • Les nouvelles versions peuvent être développées "en direct" (si vous êtes si audacieux)

Donc, vous voyez, chacun a ses propres bizarreries. La question est la suivante: quel est le moins original pour vous?

Avery Payne
la source
29
Ce problème de fichiers XFS NULLed a été corrigé il y a plus de 3 ans. xfs.org/index.php/…
Ryan Bair Le
5
Il est vrai que je n’ai pas tout le temps du monde pour suivre les changements de développement du noyau (en plus du travail et d’une famille), mais il est également certain que certains déploiements anciens et lugubres nécessitent une mise à jour. Cependant, je vais ajouter un +1 pour signaler que le correctif a été fait.
Avery Payne
13

Il peut également être intéressant de noter que vous pouvez exécuter InnoDB sans système de fichiers et améliorer les performances sans surcharge du système de fichiers. Je ne suis pas sûr de le recommander, mais je l'ai déjà utilisé sans problèmes.

InnoDB Raw Devices

En outre, si vous utilisez 90% des lectures et 10% des écritures, vous pouvez envisager de porter sur MyISAM pour de meilleures performances de lecture, à moins que vous n'ayez besoin de la capacité transactionnelle d'InnoDB.

Xorlev
la source
6
-1 pour avoir suggéré de passer à MyISAM pour de meilleures performances en lecture. A tellement d'autres défauts et inconvénients. InnoDB devrait plutôt être configuré correctement. +1 pour la suggestion InnoDB-on-raw-device.
gertvdijk
5
Je maintiens ma déclaration, MyISAM a des inconvénients mais il y a beaucoup de bien à faire. MyISAM est toujours le patron des charges de travail en lecture.
Xorlev
11

Les réponses fournies ici sont sérieusement déconseillées et doivent être mises à jour, car elles apparaissent dans les résultats de Google.

Pour les environnements de production, XFS. À chaque fois. XFS est journalisé et non bloquant. Assurez-vous de disposer des variables suivantes pour une base de données MySQL moderne (2011/2012) utilisant InnoDB en production:

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

Ne pas utiliser EXT3 ou même EXT4. Un jour, BTRFS y arrivera.

EXT3, et peut-être EXT4, se verrouille au niveau inode, pas malin!

Sources: - www.mysqlperformanceblog.com - http://dev.mysql.com/doc/internals/fr/index.html - Comprendre les aspects internes de MySQL par Sasha Pachev - https://www.facebook.com/note.php? note_id = 10150210901610933 - http://oss.sgi.com/projects/xfs/training/ - Un kit de swing, essai et erreur.

EDIT: Une mise à jour. EXT4 semble se porter plutôt bien à la mi-2013! BTRFS n'est toujours pas une bonne option. Et RHEL pourrait bien faire de XFS le nouveau système de fichiers par défaut. Encore une fois, n'utilisez PAS EXT3.

Mathnode
la source
Selon le test de Vadim Tkachenko , EXT4 fournit un débit de 20% sur XFS si MySQL 5.5 avec InnoDB est utilisé. Vadim suggère d'utiliser l'option EXT4 'dioread_nolock' lorsqu'elle est disponible (bien qu'il ne l'ait pas utilisée avec le test).
Caligari
Pourquoi le verrouillage au niveau de l'inode est-il mauvais?
Jpaugh
les autres réponses sont obsolètes … maintenant: 5 ans plus tard…
kaiser
Google "conflit de verrouillage d'inode" pour les problèmes de verrouillage d'inode.
Stark
9

La version courte est que la recommandation la plus proche de MySQL sur les systèmes de fichiers est XFS. Cependant, ext3 devrait aussi être bon, ext4 promet d’être une belle amélioration, mais il n’est pas encore assez stable, mais il devrait l'être avant la la fin de l'année.

Si vous utilisez des systèmes de fichiers de cluster, CXFS, OCFS2 et GFS devraient tous fonctionner correctement.

Je mettrais fortement en garde contre tout dérivé de Reiser, et JFS bien qu'une fois gentil ait été battu principalement par XFS et ext4 qui sont tous deux plus largement déployés.

LapTop006
la source
6

Cela ne fera probablement pas beaucoup de différence. Choisissez ce que votre distribution utilise par défaut, à condition que cela soit suffisant.

Dépensez vos efforts pour régler d’autres tâches - obtenez assez de mémoire vive - procurez-vous un contrôleur d’ raid qui ne craint rien - et corrigez l’utilisation boiteuse de la base de données de l’application (NB: c’est le principal coupable dans la plupart des cas où cela n’a pas déjà été fait.) été fait).

Cependant, considérez avec soin le système de fichiers sur lequel vous avez mis votre mysql tmpdir; cela affectera les performances, en particulier les requêtes exécutant filesort () sur disque (voir EXPLAIN pour plus de détails).

Je pense qu'un système de fichiers prenant en charge l'allocation différée est vraiment pratique ici, car vous pouvez éviter complètement les entrées-sorties pour les fichiers éphémères lorsqu'il y a suffisamment de RAM pour les conserver dans le cache. XFS, par exemple, ne s’embête pas du tout à écrire des fichiers qui sont supprimés et fermés avant qu’ils aient été alloués.

Bien sûr, placer un tmpdir sur un fichier tmpfs est intéressant du point de vue des performances, mais risque d’épuiser l’espace disponible et d’échouer les requêtes qui aboutiraient autrement (bien que les fichiers temporaires sur disque soient utilisés).

MarkR
la source
5

Je ne trouve aucun article récent comportant des "analyses" de référence sur MySQL s'exécutant sur différents systèmes de fichiers. Compte tenu de la charge de travail que vous décrivez, je doute que la fragmentation au niveau des fichiers pose vraiment problème. Sans référence officielle, je ne peux rien dire qui fasse autorité, mais mon instinct dit que chaque système de fichiers que vous avez mentionné ci-dessus fonctionnera à peu près dans le même stade (c.-à-d. Que tous dans le même ordre de grandeur pour les chiffres de performance) .

La base de données exécute réellement le spectacle, car le système de fichiers ne fait que gérer de grandes étendues auxquelles le moteur de stockage accède.

Néanmoins, il serait intéressant de faire une synthèse des performances avec tous ces systèmes de fichiers. (Cependant, je n'ai que peu d'enthousiasme pour MySQL, je ne vais donc pas m'en charger. L'analyse comparative de Postgres, OTOH, pourrait être intéressante ...)

Evan Anderson
la source
1
Thee est également une copie de stackoverflow.com/questions/1021854/… avec quelques références qui pourraient vous intéresser
nik
3

À mon humble avis, les FS disponibles pour Linux sont:

XFS (faible vitesse de lecture) est connu pour être léger sur les ressources système et rapide pour les fichiers volumineux mais médiocre pour gérer beaucoup de petits fichiers.

ReiserFS (vitesse d’écriture médiocre) n’est pas très gentil avec les ressources système mais fonctionne très bien avec beaucoup de petits fichiers.

EXT3 se situe entre les deux et effectue de manière acceptable tous les champs (raison pour laquelle il est considéré comme le service linux par défaut de Linux).

Je n’ai pas encore utilisé EXT4, pas ReiserFS4, mais j’ai jeté un œil sur certains points de repère et ReiserFS semble avoir les meilleures performances en termes de vitesse de lecture, ce que vous avez dit être le plus important pour vous.

Jetez un coup d'oeil à ceci: ReserFS4 X Ext4 X Ext3

Je recommanderais Ext3 pour sa stabilité, sa sécurité et sa maturité, mais si la vitesse de lecture est ce qui est le plus important pour vous, vous devriez envisager ReiserFS.

N'oubliez pas que vous devez également tenir compte de l'utilisation du processeur, de la stabilité et de la sécurité avant de choisir un FS.

Et bien sûr, faire un projet pilote, tester et analyser votre environnement particulier est toujours le meilleur moyen de déterminer ce qui fonctionnera le mieux pour vous.

PS: J'aurais posté plus de points de repère, mais je ne peux pas poster plus d'un lien.

OldJim
la source