Pourquoi mysql 5.5 est plus lent que 5.1 (linux, utilise mysqlslap)

10

my.cnf (5.5 et 5.1 sont les mêmes):

back_log=200
max_connections=512
max_connect_errors=999999
key_buffer=512M
max_allowed_packet=8M
table_cache=512
sort_buffer=8M
read_buffer_size=8M
thread_cache=8
thread_concurrency=4
myisam_sort_buffer_size=128M
interactive_timeout=28800
wait_timeout=7200

mysql 5.5:

..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 
      --iterations=5 -S /tmp/mysql_5.5.sock --engine=innodb
Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 15.156 seconds
        Minimum number of seconds to run all queries: 15.031 seconds
        Maximum number of seconds to run all queries: 15.296 seconds
        Number of clients running queries: 10
        Average number of queries per client: 500

mysql5.1:

..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 
      --iterations=5 -S /tmp/mysql_5.1.sock --engine=innodb
Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 13.252 seconds
        Minimum number of seconds to run all queries: 13.019 seconds
        Maximum number of seconds to run all queries: 13.480 seconds
        Number of clients running queries: 10
        Average number of queries per client: 500

Pourquoi mysql 5.5 est plus lent que 5.1?

BTW: je suis essayé mysql5.5/bin/mysqlslapet mysql5.1/bin/mysqlslap, le résultat est le même

Koerr
la source
5
Une référence qui dure 1 seconde? Est-ce une sorte de blague?
@pfo, je passe à:--concurrency=10 --number-of-queries 5000
1
Votre my.cnf configure MyISAM mais les benchmarks utilisent InnoDB. Je suis désolée, c'est toujours une blague (et il en va de même pour InnoDB par défaut si vous ne les changez pas)
Laurynas Biveinis
3
Je ne vois aucun réglage pour InnoDB dans votre my.cnf. Un benchmark par défaut la configuration est inutile et un benchmark de cette courte durée est également inutile.
Aaron Brown

Réponses:

9

Cela peut vous surprendre, mais MySQL 5.1 peut surpasser MySQL 5.5 dans certaines circonstances.

Percona a effectué un bake-off parmi plusieurs versions de MySQL

  • MySQL 4.1
  • MySQL 5.0
  • MySQL 5.1 (avec InnoDB intégré)
  • MySQL 5.1 avec plugin InnoDB
  • MySQL 5.5
  • MySQL 5.6

Tous les tests ont été effectués avec MySQL non configuré (en d'autres termes, aucun my.cnf n'a été créé). Les resultats?

  • MySQL 4.1 exécute le meilleur single-thread
  • MySQL 5.1 avec plug-in InnoDB évolue sur plusieurs cœurs mieux que 5.1 InnoDB construit, 5.5 et 5.6

Si vous souhaitez que les nouvelles versions de MySQL fonctionnent mieux, vous devez les régler. En fait, j'ai décrit dans le DBA StackExchange l'idée de réaliser un MySQL Bakeoff .

Qu'est-ce que je veux dire syntoniser?

Dans MySQL 5.5, il existe de nouvelles options InnoDB pour utiliser des threads de lecture, d'écriture et de capacité d'E / S plus dédiés. Cela peut engager plus de CPU dans des serveurs multicœurs. Laissé non configuré, MySQL 5.5 fonctionnerait sur le même pied d'égalité, dans la plupart des cas, que les anciennes versions de MySQL. Parfois, cela pourrait être pire.

RolandoMySQLDBA
la source
1
Votre réponse est correcte mais je pense qu'elle ne s'applique pas à OP. Quand il configure InnoDB, alors nous verrons.
Laurynas Biveinis