fermer
DéveloppementOutils - Conseils

Twitter communique ses améliorations sur MySQL

Samsung révèle le Exynos 1480 : Un bond en avant pour la série Galaxy A

Twitter a publié quelques-uns des réglages qu’il a mis en œuvre pour MySQL, ce qui pourrait apporter potentiellement une plus grande scalability, autrement dit avoir une meilleure capacité à s’adapter à un changement d’ordre de grandeur de la demande, du célèbre système de base de données de gestion relationnelle Open Source.

Twitter est l’un des plus grands utilisateurs de MySQL, puisque la firme utilise le logiciel de base de données pour stocker la plupart des données de ses 140 millions d’utilisateurs…

“Due to our scale, we push MySQL a lot further than most companies” ont écrit Jeremy Cole et Davi Arnaut des ingénieurs de Twitter dans un article de blog annonçant la sortie d’un certain nombre de modifications apportées à la version logiciel de Twitter à l’origine pour leur propre usage.

Ce code porte sur une question cruciale pour MySQL qui est la capacité à évoluer pour répondre aux exigences des systèmes traitant une grande quantité de données, tels que Twitter. En réalisant une grande partie des appels à un Système de Gestion de Base de Données (SGBD) NoSQL, tel que Cassandra qui est conçue pour gérer des quantités massives de données réparties sur plusieurs serveurs, Twitter contourne ainsi les limites des systèmes de bases de données relationnelles comme MySQL ont, dès lors que l’on étend le système à plusieurs serveurs.

Parmi les changements les plus notables, la firme a posté un code qui permet à MySQL d’être plus efficace sur des systèmes avec beaucoup de mémoire. Plus précisément, il alloue au démarrage toute la mémoire nécessaire pour le moteur de base de données InnoDB. Il assure également une performance adéquate, même lorsque la mémoire disponible sur le serveur est au minimum.

Les efforts de Twitter de massivement rendre MySQL plus scalable, rejoignent un certain nombre d’autres produits qui ciblent ce besoin spécifique, comme le groupe XtraDB qui a récemment publié Percona, Oracle MySQL Cluster ou encore TokuDB de TokuTek.

En plus des améliorations de scalabilité, Twitter a également ajouté un certain nombre d’autres fonctionnalités au code Open Source. Celles-ci comprennent de nouvelles vérifications d’état internes, qui permettraient aux utilisateurs de surveiller les performances InnoDB de plus près. Le code permet également d’optimiser MySQL pour l’utilisation des SSD (solid-state drive, anglais).

Voici la liste des informations relevées sur le blog :

  • Add additional status variables, particularly from the internals of InnoDB. This allows us to monitor our systems more effectively and understand their behavior better when handling production workloads.
  • Optimize memory allocation on large NUMA systems: Allocate InnoDB’s buffer pool fully on startup, fail fast if memory is not available, ensure performance over time even when server is under memory pressure.
  • Reduce unnecessary work through improved server-side statement timeout support. This allows the server to proactively cancel queries that run longer than a millisecond-granularity timeout.
  • Export and restore InnoDB buffer pool in using a safe and lightweight method. This enables us to build tools to support rolling restarts of our services with minimal pain.
  • Optimize MySQL for SSD-based machines, including page-flushing behavior and reduction in writes to disk to improve lifespan.

La scalabilité est une caractéristique cruciale pour tous les services réseau, sans laquelle le service peut se retrouver victime de son succès. En effet, on sait que la popularité élevée d’un service peut apporter des difficultés techniques qui peuvent aller d’une baisse de la rentabilité jusqu’à l’impossibilité technique de servir tous les clients… C’est pourquoi il est toujours intéressant de se pencher sur celle-ci, voire indispensable…

Twitter a déposé les patchs sur GitHub, en vertu d’une licence BSD (Berkeley Software Distribution), qui pour rappel permettent de réutiliser tout ou une partie du logiciel sans restriction, qu’il soit intégré dans un logiciel libre ou propriétaire.

Pour en savoir davantage sur ce projet, vous pouvez consulter le change log et la documentation.

Que pensez-vous de ces améliorations ? Allez-vous les mettre en œuvre sur vos instances ?

Tags : forkGitHubMySQLopen sourcescalabilitéscalabilityTwitter
Yohann Poiron

The author Yohann Poiron

J’ai fondé le BlogNT en 2010. Autodidacte en matière de développement de sites en PHP, j’ai toujours poussé ma curiosité sur les sujets et les actualités du Web. Je suis actuellement engagé en tant qu’architecte interopérabilité.