Dlaczego mysql 5.5 wolniejszy niż 5.1 (Linux, używając mysqlslap)

10

my.cnf (5.5 i 5.1 są takie same):

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

Dlaczego mysql 5.5 wolniejszy niż 5.1?

BTW: Próbuję mysql5.5/bin/mysqlslapi mysql5.1/bin/mysqlslapwynik jest taki sam

Koerr
źródło
5
Benchmark, który działa przez 1 sekundę? Czy to jakiś żart?
@pfo, zmieniam na:--concurrency=10 --number-of-queries 5000
1
Twój my.cnf konfiguruje MyISAM, ale testy porównawcze używają InnoDB. Przepraszam, to wciąż żart (podobnie jak domyślne ustawienia InnoDB, jeśli ich nie zmienisz)
Laurynas Biveinis,
3
Nie widzę żadnego tuningu dla InnoDB w twoim my.cnf. Test porównawczy względem domyślnej konfiguracji jest bezużyteczny, a test porównawczy o tak krótkim czasie trwania jest również bezużyteczny.
Aaron Brown,

Odpowiedzi:

9

Może się to wydawać zaskakujące, ale MySQL 5.1 może w pewnych okolicznościach przewyższyć MySQL 5.5.

Percona przeprowadziła starcie między wieloma wersjami MySQL

  • MySQL 4.1
  • MySQL 5.0
  • MySQL 5.1 (z wbudowanym InnoDB)
  • MySQL 5.1 z wtyczką InnoDB
  • MySQL 5.5
  • MySQL 5.6

Wszystkie testy zostały przeprowadzone z MySQL nieskonfigurowanym (innymi słowy, nie utworzono my.cnf). Wyniki?

  • MySQL 4.1 wykonuje najlepsze jednowątkowe
  • MySQL 5.1 z wtyczką InnoDB skaluje się na wielu rdzeniach lepiej niż 5.1 InnoDB zbudowany, 5.5 i 5.6

Jeśli chcesz, aby nowsze wersje MySQL działały lepiej, musisz je dostroić. W rzeczywistości opisałem w DBA StackExchange pomysł na wykonanie MySQL Bakeoff .

Co mam na myśli dostroić?

W MySQL 5.5 dostępne są nowe opcje InnoDB do wykorzystania bardziej dedykowanych wątków odczytu, wątków zapisu i ogólnej wydajności we / wy. Może to angażować więcej procesorów na serwerach wielordzeniowych. Pozostawiony nieskonfigurowany, MySQL 5.5 działałby na tym samym poziomie, w większości przypadków, jak starsze wersje MySQL. Czasami może działać gorzej.

RolandoMySQLDBA
źródło
1
Twoja odpowiedź jest poprawna, ale myślę, że nie dotyczy OP. Kiedy skonfiguruje InnoDB, zobaczymy.
Laurynas Biveinis,