Posts Tagged ‘bench’

30
déc

Bench MariaDB vs MySQL

   Posted by: freshdaz    in bench, MariaDB, MySQL

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 :

  1. MariaDB 5.2.4
  2. MySQL 5.5.8
  3. 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

Tags: , , ,

4
jan

Les nouveautés de MySQL 5.1 — (part 5/5)

   Posted by: freshdaz    in MySQL


(<- précédent)

mysqlslap : un utilitaire de test de charge et de performance

Disponible depuis MySQL 5.1.4, mysqlslap permet d’effectuer des tests de stress et de charge sur votre serveur MySQL. Vous pourrez alors tester les performances de votre SGBDR préféré, après, par exemple, une nouvelle installation, un changement d’architecture ou après avoir modifié des paramètres de configuration.

Créé pour devenir le meilleur ami des administrateurs de bases de données et des développeurs, le client mysqlslap envoie des requêtes au serveur MySQL en créant plusieurs connexions simultanées. A la fin de la simulation, un rapport de diagnostic est crée sur la sortie standard. Vous avez aussi la possibilité de l’écrire dans un fichier au format CSV utilisable directement avec Calc d’OpenOffice ou Excel de Microsoft.

Exemple d’utilisation de mysqlslap avec les options suivantes :

  • user, password, socket : autentification classique d’un client MySQL,
  • concurrency : nombre de clients effectuant simultanément une requête SELECT,
  • iterations : nombre d’itérations du test à faire,
  • number-of-queries : nombre total de requêtes effectuées lors du test,
  • engine : moteur(s) à utiliser,
  • auto-generate-sql : mysqlslap génère automatiquement un jeu de tests,
  • number-int-cols : nombre de colonnes de type INT à créer,
  • number-char-cols : nombre de colonnes de type CHAR à créer,
  • auto-generate-sql-load-type : permet de spécifier le type de requêtes (lecture, insertion, lecture sur la clé primaire, mise à jour ou mixte)

Tests de performances avec des tables MyISAM et innoDB:

shell> mysqlslap --user=daz --password --socket=/tmp/mysql51.sock
--concurrency=1,100   --iterations=10  --number-of-queries=1000
--engine=myisam,innodb   --auto-generate-sql  --number-int-cols=2
--number-char-cols=3   --auto-generate-sql-load-type=mixed


Benchmark
   Running for engine myisam
   Average number of seconds to run all queries: 1.576 seconds
   Minimum number of seconds to run all queries: 1.539 seconds
   Maximum number of seconds to run all queries: 1.631 seconds
   Number of clients running queries: 1
   Average number of queries per client: 1000
Benchmark
   Running for engine myisam
   Average number of seconds to run all queries: 1.792 seconds
   Minimum number of seconds to run all queries: 1.543 seconds
   Maximum number of seconds to run all queries: 2.107 seconds
   Number of clients running queries: 100
   Average number of queries per client: 10
Benchmark
   Running for engine innodb
   Average number of seconds to run all queries: 2.477 seconds
   Minimum number of seconds to run all queries: 2.430 seconds
   Maximum number of seconds to run all queries: 2.663 seconds
   Number of clients running queries: 1
   Average number of queries per client: 1000
Benchmark
   Running for engine innodb
   Average number of seconds to run all queries: 2.704 seconds
   Minimum number of seconds to run all queries: 0.725 seconds
   Maximum number of seconds to run all queries: 5.272 seconds
   Number of clients running queries: 100
   Average number of queries per client: 10


Conclusion

Toujours aussi performant, fiable et robuste, certes un peu moins simple à administrer mais tellement plus riche, cette nouvelle version de MySQL devrait faire le bonheur des administrateurs de bases de données et des développeurs. Nous espérons que cet article vous a mis l’eau à la bouche et vous donnons d’ors et déjà rendez-vous au prochain numéro pour explorer plus en détail le partitionnement de MySQL.

Les nouveautés de MySQL 5.1 — (part 1/5)

Tags: , , ,