Avantages de Barracuda et de la compression

12

J'ai lu sur les formats de fichiers MySQL Antelope et Barracuda il y a un certain temps, et je me demande si je pourrais bénéficier de Barracuda et de la compression.

Mon serveur utilise actuellement Antelope, car c'est la valeur par défaut de MySQL.
J'ai eu plusieurs fois des problèmes de mémoire en raison de la grande base de données que j'ai. Ma base de données augmente chaque jour.

Il semble que la compression profite à quelques personnes, comme:
http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

Je comprends que la mémoire et l'espace disque peuvent être inférieurs, mais je ne sais pas si je comprends cela (cité dans l'article):
"~ 5% de charge CPU selon le top (de 80 à 100% en attente d'E / S principalement)
0,01 temps de recherche moyen par clé primaire (de 1 à 20 secondes avant la conversion) "

Je pensais que ces deux choses ne s'amélioreraient PAS, car si les données sont compressées, le serveur doit décompresser afin d'obtenir à nouveau les données d'origine, donc cela n'a- t- il pas de sens que l'utilisation du processeur augmente?

Cela vous profite-t-il dans les applications intensives en lecture / écriture? Recommanderiez-vous que je passe à Barracuda et à la compression?

Connaissez-vous des problèmes de Barracuda?
Il semble que la réponse à la question suivante pointe quelques problèmes, mais comme c'est à partir de 2011, je dirais qu'ils sont résolus maintenant: /server/258022/mysql-innodb-how-to-switch au format barracuda

Nuno
la source

Réponses:

14

En ce qui concerne "Dynamic" , le format Barracuda non compressé uniquement, très peu de choses ont changé par rapport au format compact, principalement sur la façon dont les blobs (et les champs très dynamiques) sont stockés . Je n'ai jamais eu de problème avec compact vs dynamique, je peux donc recommander en toute sécurité la dynamique de Barracuda. N'oubliez pas que Barracuda prend également en charge les anciens formats de ligne redondants et compacts .

L'article que vous mentionnez est probablement trop ancien (5.1) et, comme Peter Z., PDG de Percona, le mentionne sur les commentaires, il peut être un peu trompeur. Cela ne signifie pas que la compression ne peut pas être un gain énorme en fonction des charges de travail. Cependant, je vous recommanderais de l'essayer sur les versions> = 5.6, car Facebook et Oracle ont fait beaucoup d'améliorations à ce sujet.

En tant que documents de référence plus récents, je vous recommanderais:

En particulier, j'aime les documents Facebook car ils sont tiers (pas besoin d'agenda) et ils ont l'un des plus grands déploiements MySQL au monde. Comme vous pouvez le voir, ils ont eu des configurations très réussies combinant la technologie SSD avec la compression.

Cela vous sera-t-il avantageux? Cela dépendra de votre charge de travail, de votre ensemble de travail et de votre configuration (IOPS, mémoire) . Selon que vous êtes lié aux E / S, lié au CPU ou lié à la mémoire, la compression peut affecter négativement dans certains cas, en ajoutant du CPU supplémentaire, des besoins en mémoire (les pages compressées et non compressées sont stockées sur le pool de mémoire tampon InnoDB) ou en générant trop d'échecs de compression, augmentant la latence. Cela dépend également du type de données: la compression peut être très utile pour les gros objets de texte, mais elle peut être inutile avec des données déjà compressées.

D'après mon expérience, dans la pratique, il y a des gens pour qui la compression était le Saint Graal de la performance et en sont très satisfaits, mais dans d'autres cas, nous avons dû revenir à des données non compressées car aucun gain n'a été obtenu. Bien qu'une charge de travail d'écriture très lourde puisse sembler un mauvais environnement pour la compression, si dans votre cas particulier vous n'êtes pas lié à la CPU et à la mémoire, mais lié à l'iops, cela peut être néanmoins utile.

En général, il est très difficile de prédire les résultats, vous devez généralement configurer un environnement de test pour l'analyse comparative, puis découvrir pourquoi vous obtenez des résultats meilleurs ou pires (et de cette façon, vous pouvez jouer avec différentes tailles de bloc, etc.). Barracuda est complètement sûr. La compression peut ou non vous convenir. Et vous pouvez toujours expérimenter d'autres méthodes de compression comme la compression côté client des objets blob (par exemple, si vous vous retrouvez liée au processeur) ou d'autres moteurs tiers comme RocksDB et TokuDB , dans lesquels la compression est une grande priorité, car elle est concentrée en termes de performances pour des ensembles de données plus volumineux que InnoDB ne peut gérer.

En bref: les principales raisons d'utiliser Barracuda sont la gestion des BLOB, la innodb_large_prefixcompatibilité (grands index) et la compression. Dynamique, sur MySQL 8.0 est désormais le format de fichier par défaut.

jynus
la source
1
C'est une réponse vraiment IMPRESSIONNANTE et claire! C'est tout à fait logique et c'est exactement le type de réponse que je souhaitais. Vous mentionnez MySQL 5.6 (qui est ce que j'ai mis à niveau récemment) et faites référence à Facebook comme exemple, comme j'aime, car ils doivent généralement surmonter les défis avant tout le monde. Malheureusement, il ne sera pas facile de le tester en premier, car un environnement de test n'aura pas la même charge CPU / IO / RAM que la production, mais en fait je vais devoir l'essayer! Merci beaucoup pour votre temps.
Nuno
Comme le format de ligne peut être choisi au niveau de la table, cela peut vous donner une certaine flexibilité pour les tests en production (après des tests appropriés sur une machine séparée). Cependant, cette approche rendra potentiellement le débogage et l'analyse comparative plus difficiles.
jynus
Ouais, je pourrais probablement essayer de convertir quelques tables en premier (peut-être celles qui ne sont pas si grandes / utilisées). Cependant, pour les grands, cela nécessiterait quelques temps d'arrêt, plutôt qu'un seul temps d'arrêt où je les convertirais tous à la fois. Je vais devoir voir quelle est la meilleure approche. Cependant, je ne comprends pas pourquoi cela rendrait le débogage plus difficile. Que voulez-vous dire exactement ici? Merci beaucoup.
Nuno
1
Vous avez des outils comme pt-online-schema-change percona.com/doc/percona-toolkit/2.2/… pour recréer des tables en ligne. Je viens de mentionner que le mélange de certaines tables peut rendre plus difficile la mesure des changements de processeur / mémoire / iops en raison du changement de moteur et les différencier des changements de charge normaux ou en raison des changements de mise en cache lors de la recréation. Il est également difficile de voir sur une machine différente avec un matériel différent, alors bonne chance!
jynus
Sur ZFS, ce n'est pas absolument ce qui n'est pas bon lors de l'utilisation de LZ4 sur le système de fichiers.
Denis Denisov