Por que o mysql 5.5 é mais lento que o 5.1 (linux, usando mysqlslap)

10

my.cnf (5.5 e 5.1 é o mesmo):

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

Por que o mysql 5.5 mais lento que 5.1?

BTW: Estou tentado mysql5.5/bin/mysqlslape mysql5.1/bin/mysqlslap, o resultado é o mesmo

Koerr
fonte
5
Uma referência que dura 1 segundo? Isso é algum tipo de brincadeira?
@pfo, mudo para:--concurrency=10 --number-of-queries 5000
11
Seu my.cnf configura o MyISAM, mas os benchmarks usam o InnoDB. Sinto muito, isso ainda é uma piada (e os padrões do InnoDB também se você não os alterar) #
Laurynas Biveinis
3
Não vejo nenhum ajuste para o InnoDB no seu my.cnf. Uma referência contra a configuração padrão é inútil e uma referência dessa curta duração também é inútil.
Aaron Brown

Respostas:

9

Você pode achar isso surpreendente, mas o MySQL 5.1 pode superar o MySQL 5.5 em determinadas circunstâncias.

Percona realizou um bake-off entre vários lançamentos do MySQL

  • MySQL 4.1
  • MySQL 5.0
  • MySQL 5.1 (com InnoDB embutido)
  • MySQL 5.1 com o plugin InnoDB
  • MySQL 5.5
  • MySQL 5.6

Todos os testes foram realizados com o MySQL não configurado (em outras palavras, nenhum my.cnf foi feito). Os resultados?

  • O MySQL 4.1 executa o melhor processo single-threaded
  • MySQL 5.1 com plug-in InnoDB escalável em múltiplos núcleos melhor que o 5.1 InnoDB compilado, 5.5 e 5.6

Se você deseja que versões mais recentes do MySQL tenham um desempenho melhor, você deve ajustá-lo. De fato, descrevi no DBA StackExchange a idéia de realizar um MySQL Bakeoff .

O que quero dizer com sintonia para isso?

No MySQL 5.5, existem novas opções do InnoDB para utilização de threads de leitura mais dedicados, threads de gravação e capacidade geral de E / S. Isso pode envolver mais CPUs em servidores multicore. Deixado desconfigurado, o MySQL 5.5 operaria no mesmo campo de jogo, na maioria dos casos, das versões mais antigas do MySQL. Às vezes, poderia ter um desempenho pior.

RolandoMySQLDBA
fonte
11
Sua resposta está correta, mas acho que não se aplica ao OP. Quando ele configurar o InnoDB, veremos.
Laurynas Biveinis