MySQL 5.6 rock !
Encore un bench (c’est la saison :))
Comme d’habitude, mon but n’est pas de connaître les possibilités maximales du serveur (d’autres le font mieux que moi), mais plutôt d’avoir une idée assez précise de leurs comportements respectifs dans un environnement le plus proche possible de ma prod.
Pour ce test, les candidats sont, Percona 5.5, MariaDB 5.3 & 5.5, MySQL 5.5 et la dernière milestone de MySQL 5.6. L’idée est de voir comment se comporte les différentes versions dans un contexte I/O bounds ie un faible hit ratio du buffer pool (ou du moins le plus bas possible), en d’autres termes, simuler le comportement du serveur MySQL dans un environnement où la quantité de données est énorme (comme à Viadeo).
Les règles du bench
sysbench, options read only complex, 128 connexions concurrentes
Moteur InnoDB, 30 millions de lignes, 6.7 Go de données
Pas de warmup, le disque doit être sollicité au maximum.
Les tests ont été lancé 10 fois sur chaque version, avec restart du serveur entre chaque run.
Les confs sont proche cad les paramètres communs à toutes les versions ont les mêmes valeurs, les autres, leur valeur par défaut
La moyenne donne les résultats suivants:
95 centile (en ms)
- Percona 5.5.12: 101.142
- MariaDB 5.3.5 *: 94.926
- MariaDB 5.5.20: 104.02
- MySQL 5.5.22: 103.644
- MySQL 5.6.4: 66.586
Ce que je trouve intéressant dans ces résultats:
Les 3 versions de la branche 5.5 ont des résultats équivalents. Certes MariaDB est encore en beta, mais je fais le pari que Monty program fera ce qu’il faut pour que la 1ère GA soit dispo pour la Percona MySQL User Conference du mois d’Avril.
MariaDB 5.3 à de bons résultats, cependant étant basée sur la branche 5.1 de MySQL, sa configuration est différente des autres versions. C’est la seule version de ce test avec 1 seul buffer_pool, ce qui est intéressant pour le temps d’exécution mais très pénalisant pour la scalabilité ie augmentation du nombre de requêtes concurrentes (cf résultats du bench TPS ci-après)
Mais le résultat le plus marquant est celui de la version 5.6 de MySQL qui explose la branche 5.5 avec 40% de temps en moins !!!
Nombre de transactions par seconde
- Percona 5.5.12: 3401.152
- MariaDB 5.3.5 *: 2912.667
- MariaDB 5.5.20: 3185.623
- MySQL 5.5.22: 3436.611
- MySQL 5.6.4: 3601.915
Là, MariaDB 5.3 est en retrait, ce qui est normal du fait de son unique buffer pool.
MariaDB 5.5 est à la traîne par rapport à MySQL et Percona 5.5.
Le meilleur résultat est là encore MySQL 5.6 qui non seulement à les meilleurs temps de réponse (cf résultats du benche 95 centile au dessus) mais en plus à le meilleur débit des 5 candidats.
Je n’ai pas encore eu le temps de me pencher sur le pourquoi du comment, mais si cela ce confirme par la suite, je tire d’ores et déjà mon chapeau aux équipes MySQL d’Oracle pour leur excellent travail, d’autant plus que ces évolutions bénéficieront à MariaDB & Percona, dans un futur que j’espère très proche.
Divers
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=40000000 \
--oltp-test-mode=complex --max-requests=0 --max-time=600 \
--num-threads=128 --oltp-read-only
innodb_buffer_pool_instances 4 (1 pour MariaDB 5.3)
innodb_buffer_pool_size 34359738368
innodb_doublewrite ON
innodb_file_per_table ON
innodb_flush_log_at_trx_commit 2
innodb_log_buffer_size 8388608
innodb_log_file_size 152043520
innodb_log_files_in_group 2
innodb_version 1.1.8-24.1 / 1.2.4 (ou XtraDB 1.1.6-20.1)
general_log OFF
log_bin OFF
slow_query_log OFF
Name: sbtest Engine: InnoDB Version: 10 Row_format: Compact Rows: 30000237 Avg_row_length: 224 Data_length: 6741295104 Max_data_length: 0 Index_length: 477085696 Data_free: 6291456 Auto_increment: 33800371 Create_time: 2012-03-29 18:42:34 Update_time: NULL Check_time: NULL Collation: utf8_swedish_ci
Architecte Solution Cloud chez Oracle
MySQL Geek, Architecte, DBA, Consultant, Formateur, Auteur, Blogueur et Conférencier.
—–
Blog: www.dasini.net/blog/en/
Twitter: https://twitter.com/freshdaz
SlideShare: www.slideshare.net/freshdaz
Youtube: https://www.youtube.com/channel/UC12TulyJsJZHoCmby3Nm3WQ
—–
Nice graphs 😉
^^
i had a good trainer
Did you try to disable ICP, seen some nasty regressions for some range plans.
Hi svar,
the goal of this benchmark is not to know which is the best tuned MySQL branch. Vadim, Dimitri, Axel & co do it well and better than me 🙂
My aim is to know their behaviors in a « default » configuration. Like the majority of the MySQL users.
Anyway, i did the bench with ICP=off and the results are quiet similar for the R/W I/O bounds bench:
95 centile: 183,995 ms (vs 183.1275)
TPS: 2118,7575 (vs 2134.9125)
cf: http://dasini.net/blog/2012/04/05/mysql-5-6-rock-suite/
For the read only I/O bounds bench, here again the results are similar:
95 centile: 104,967 ms (vs 104.02)
TPS: 3188,872 (vs 3185.623)
cf: http://dasini.net/blog/2012/03/30/mysql-5-6-rocks/
++