Почему MySQL 5.5 медленнее, чем 5.1 (Linux, используя MySQLslap)

10

my.cnf (5.5 и 5.1 - то же самое):

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

Почему MySQL 5.5 медленнее, чем 5.1?

Кстати: я пытался, mysql5.5/bin/mysqlslapи mysql5.1/bin/mysqlslapрезультат тот же

Koerr
источник
5
Тест, который работает в течение 1 секунды? Это какая-то шутка?
@pfo, я перехожу на:--concurrency=10 --number-of-queries 5000
1
Ваш my.cnf настраивает MyISAM, но в тестах используется InnoDB. Я извиняюсь, это все еще шутка (как и InnoDB по умолчанию, если вы их не измените)
Laurynas Biveinis
3
Я не вижу никаких настроек для InnoDB в вашем my.cnf. Точка отсчета по умолчанию для конфигурации бесполезна, а эталон такой короткой продолжительности также бесполезен.
Аарон Браун

Ответы:

9

Это может показаться удивительным, но MySQL 5.1 может превзойти MySQL 5.5 при определенных обстоятельствах.

Percona провела конкурс среди множества выпусков MySQL

  • MySQL 4.1
  • MySQL 5.0
  • MySQL 5.1 (со встроенным InnoDB)
  • MySQL 5.1 с плагином InnoDB
  • MySQL 5.5
  • MySQL 5.6

Все тесты были выполнены с ненастроенным MySQL (другими словами, my.cnf не был сделан). Результаты, достижения?

  • MySQL 4.1 выполняет лучшие однопоточные
  • MySQL 5.1 с подключаемым модулем InnoDB масштабируется на несколько ядер лучше, чем встроенный InnoDB 5.1, 5.5 и 5.6

Если вы хотите, чтобы более новые версии MySQL работали лучше, вы должны настроить его. Фактически, я описал в DBA StackExchange идею выполнения MySQL Bakeoff .

Что я имею в виду мелодию для этого?

В MySQL 5.5 появились новые опции InnoDB для использования более выделенных потоков чтения, записи потоков и общей емкости ввода-вывода. Это может задействовать больше процессоров в многоядерных серверах. Оставленный ненастроенным, MySQL 5.5 будет работать на том же уровне игры, в большинстве случаев, что и более старые версии MySQL. Иногда это может работать хуже.

RolandoMySQLDBA
источник
1
Ваш ответ правильный, но я думаю, что он не относится к ОП. Когда он настроит InnoDB, тогда посмотрим.
Лауринас Бивейнис