Назад | Перейти на главную страницу

MySQL 5.1 против MySQL 5.5 (5.1 вдвое быстрее)

Недавно я установил MySQL 5.1 на CentOS 6.2 и получил прирост производительности по сравнению с MySQL 4.1, который мы используем. Поэтому я обновил MySQL 5.1 до MySQL 5.5, чтобы увидеть, есть ли еще больший прирост, но на самом деле он работал вдвое медленнее, чем установка MySQL 5.1.

Тест, который я провел, проводился на столе с 2.3M записями с примечаниями blob.

5.1: 57.5899 сек

5.5: 96.3821 с

Что действительно интересно, так это то, что если я сделаю 100 000 записей, 5,5 превосходит 5,1, но все, что после этого, приводит к увеличению нагрузки 5,5, как в шипах; ускоряется и замедляется по мере загрузки, из-за чего, кажется, появляются лишние секунды.

Есть мысли, почему это? Одинаковый my.cnf для 5.1 и 5.5

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
bind-address = xxx.xxx.xxx.xxx

#This option makes InnoDB to store each created table into its own .ibd file.
innodb_file_per_table=1
max_allowed_packet=900M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Бывают случаи, когда 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 лучше всех работает с однопоточным InnoDB
  • MySQL 5.1 с подключаемым модулем InnoDB масштабируется на нескольких ядрах лучше, чем встроенный InnoDB 5.1, 5.5 и 5.6

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

Что я имею в виду настроиться на это?

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

Подумайте о следующем:

  • Мусор на входе, мусор на выходе
  • Ты получаешь то, за что платишь
  • Два слова: комплексная проверка

Итог: MySQL 5.5 и Percona Server должны быть настроены для желаемого повышения производительности.

Имейте это в виду

Что такое Ламборджини?

Проблемы, которые вы видите, могут быть вызваны десятками различных основных причин. Гадать точно не стоит; вам, безусловно, необходимо тщательно измерить и диагностировать. Если вы соберете достаточно информации, истинная причина будет очевидна, и решение будет очевидным (при условии, что вы также достаточно разбираетесь во внутреннем устройстве сервера, чтобы понимать, на что вы смотрите). Если вы угадаете и попытаетесь сделать что-то вроде перенастройки сервера, мой опыт показывает, что вы можете значительно усугубить проблему или вызвать другие проблемы, и вы никогда не узнаете, помогло ли какое-либо конкретное изменение или нет.

Я бы предложил использовать инструмент pt-stalk из Percona Toolkit для захвата набора диагностических данных с сервера, когда происходит один из всплесков медленности, и то же самое, когда он работает быстрее. Там почти наверняка должно быть достаточно информации, чтобы понять, что происходит. Если вам неудобно проводить диагностику по нему, у любого компетентного поставщика поддержки MySQL не должно возникнуть проблем, если вы заархивируете образцы из pt-stalk и отправите их.

Я не хочу быть слишком повторяющимся или настойчивым, но опять же, пожалуйста, не используйте в этом вопросе метод проб и ошибок.