Avec les sorties de MySQL 5.5.8 et de MariaDB 5.2.4, l’écosystème SGBDR open source se retrouve donc avec 3 bases (n’oublions pas MySQL 5.1.53) en GA. J’ai eu envi de voir le résultat des améliorations apportées par les équipes d‘Oracle sur la première version majeure post rachat (MySQL 5.5.8) et celles apportées par la communauté et les équipes de Monty program pour la version basée sur MySQL 5.1.53 (MariaDB 5.2.4).
De nombreuses optimisations ont eu lieu sur la version MySQL 5.5.8, ainsi que sur le moteur de stockage InnoDB. Idem pour MariaDB et la version InnoDB de Percona qu’elle embarque (XtraDB).
Un des gros inconvénients des benchs, c’est qu’ils ne veulent souvent rien dire dans l’absolu. En d’autres termes, le résultat obtenu valide les hypothèses retenues qui ont rarement la chance de s’appliquer totalement à votre cas d’utilisation. Mais faut bien essayer de quantifier les choses ! Dans l’optique d’avoir un résultat le plus objectif possible, j’ai effectué mes tests avec 3 outils de bench open source pour bases de données différents:
Les tests comportent des lectures, des écritures et des transactions plus complexes et ils se déroulent seulement sur des table InnoDB.
La configuration des serveurs est très proche mais pas strictement identique car les paramètres ne sont pas tous les mêmes. Elle n’est pas orientée performances maximale, (ce n’était pas mon but) mais sécurité des données (plus proche de notre réalité de production).
La machine de test n’est qu’un PC (voir configuration ci dessous)
MySQL 5.1.53 vs MySQL 5.5.8 vs MariaDB 5.2.4
Configuration
# OS: Ubuntu 10.04 LTS
# Platform: x86_32
# CPU: Intel Core 2 Duo CPU T9550 @ 2.66GHz (x2)
# RAM: 3.4GB
# Disk(s): 1 x ATA Hitachi HTS723216L9A362
# # Versions : MySQL 5.1.53, MySQL 5.5.8, MariaDB 5.2.4
# # Moteur : Innodb
Résultats
dbt2
Transactions (plusieurs tables)
40 connexions simultanées
MySQL 5.5.8 est 19% plus rapide que MySQL 5.1.53
MariaDB 5.2.4 est 53% plus rapide que MySQL 5.1.53
150 connexions simultanées
MySQL 5.5.8 est 49% plus rapide que MySQL 5.1.53
MariaDB 5.2.4 est 59% plus rapide que MySQL 5.1.53
sysbench
Transactions (1 table)
40 connexions simultanées
MySQL 5.5.8 est 1969% plus rapide que MySQL 5.1.53
MariaDB 5.2.4 est 2271% plus rapide que MySQL 5.1.53
150 connexions simultanées
MySQL 5.5.8 est 287% plus rapide que MySQL 5.1.53
MariaDB 5.2.4 est 427% plus rapide que MySQL 5.1.53
Lectures simples
40 connexions simultanées
MySQL 5.5.8 est 14% moins rapide que MySQL 5.1.53
MariaDB 5.2.4 est 3% moins rapide que MySQL 5.1.53
150 connexions simultanées
MySQL 5.5.8 est 15% moins rapide que MySQL 5.1.53
MariaDB 5.2.4 est 2% moins rapide que MySQL 5.1.53
Lectures complexes
40 connexions simultanées
MySQL 5.5.8 est 12% moins rapide que MySQL 5.1.53
MariaDB 5.2.4 est 0.7% moins rapide que MySQL 5.1.53
150 connexions simultanées
MySQL 5.5.8 est 14% moins rapide que MySQL 5.1.53
MariaDB 5.2.4 est 5% moins rapide que MySQL 5.1.53
mysqlslap
Update primary key
40 connexions simultanées
MySQL 5.5.8 est 1793% fois plus rapide que MySQL 5.1.53
MariaDB 5.2.4 est 1954% fois plus rapide que MySQL 5.1.53
150 connexions simultanées
MySQL 5.1.53 => ERROR : Lock wait timeout exceeded; try restarting transaction
MariaDB 5.2.4 est 26% fois plus rapide que MySQL 5.5.8
Insert
40 connexions simultanées
MySQL 5.5.8 est 1595% fois plus rapide que MySQL 5.1.53
MariaDB 5.2.4 est 1731% fois plus rapide que MySQL 5.1.53
150 connexions simultanées
MySQL 5.5.8 est 4106% fois plus rapide que MySQL 5.1.53
MariaDB 5.2.4 est 4625% fois plus rapide que MySQL 5.1.53
Insert + Select
40 connexions simultanées
MySQL 5.5.8 est 1452% fois plus rapide que MySQL 5.1.53
MariaDB 5.2.4 est 1714% fois plus rapide que MySQL 5.1.53
150 connexions simultanées
MySQL 5.5.8 et MariaDB 5.2.4 sont 2400% fois plus rapide que MySQL 5.1.53
Select
40 connexions simultanées
MySQL 5.1.53 est 8% plus rapide que MariaDB 5.2.4.
MySQL 5.1.53 est 9% plus rapide que MySQL 5.5.8.
150 connexions simultanées
MySQL 5.1.53 et MariaDB 5.2.4 sont 15% plus rapide que MySQL 5.5.8.
Select on primary key
40 connexions simultanées
MySQL 5.1.53 est 4% plus rapide que MariaDB 5.2.4.
MySQL 5.1.53 est 10% plus rapide que MySQL 5.5.8.
150 connexions simultanées
MySQL 5.1.53 et MariaDB 5.2.4 sont 7% plus rapide que MySQL 5.5.8.
Résumé
MariaDB 5.2.4 et MySQL 5.5.8 ont de façon particulièrement significative, de meilleures performances en écritures que MySQL 5.1.53 (avantage à MariaDB 5.2.4).
En ce qui concerne, les lectures, les performances de MariaDB 5.2.4 et de MySQL 5.1.53 sont très proches (léger avantage à MySQL 5.1.53). MySQL 5.5.8 est un peu en retrait.
En fonction des résultats des benchs, mon classement est le suivant :
- MariaDB 5.2.4
- MySQL 5.5.8
- MySQL 5.1.53
Je dois avouer, que je suis surpris par l’ampleur des écarts, notamment en écritures ! D’autres tests seront fait sur une machine plus costaud et dans un environnement plus proche de notre production.
Fichiers
Configuration de MySQL 5.1.53
Configuration de MySQL 5.5.8
Configuration de MariaDB 5.2.4
Résultats brut