MySQL 5.6 rock !

mars 30, 2012

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

 

dasini.net - 95 centile

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

 

dasini.net - transactions par seconde

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.

2ème partie de l’article …

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

4 Responses to “MySQL 5.6 rock !”

  1. Nice graphs 😉

  2. ^^
    i had a good trainer

  3. Did you try to disable ICP, seen some nasty regressions for some range plans.

  4. 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/

    ++