Самая загадочная проблема MySQL: запросы медленнее - PullRequest
1 голос
/ 12 февраля 2011

Это самая загадочная проблема с MySQL, с которой я столкнулся в своей карьере администратора. Может ли кто-нибудь с мастерством MySQL помочь мне немного в этом?:

Сейчас я запускаю приложение, которое запрашивает мои таблицы MySQL / InnoDB много раз в секунду. Эти запросы просты и оптимизированы - либо вставка одной строки, либо выбор с индексом.

Обычно запросы выполняются очень быстро и выполняются менее чем за 10 мс. Однако раз в час или около того все запросы замедляются. Например, сегодня в 5:04:39 на выполнение нескольких простых запросов ушло более 1-3 секунд, как показано в моем журнале медленных запросов.

Почему это так, и как вы думаете, какое решение?

У меня есть несколько собственных идей: может быть, жесткий диск в это время занят? Я запускаю облачный сервер (rackspace), но flush_log_at_trx_commit имеет значение 0 и тонны буферной памяти (в 10 раз больше размера таблицы на диске). Таким образом, вставки и выборки должны быть сделаны из памяти, верно?

Кто-нибудь еще испытывал что-то подобное раньше? Я искал по всему форуму и другим, и похоже, что никаких других проблем с MySQL я не видел раньше.

1 Ответ

1 голос
/ 27 февраля 2011

Есть много причин для внезапных остановок. Например, даже если вы используете flush_log_at_trx_commit = 0, InnoDB потребуется короткая пауза, поскольку это увеличивает размер файлов данных.

Мой опыт работы с меньшими типами экземпляров в Rackspace показывает, что IO совершенно ужасен. Я видел случайные записи (которые должны занимать 10 мс), занимающие 500 мс.

Во встроенном MySQL нет ничего, что помогло бы вам легче определить проблему. Возможно, вы захотите взглянуть на медленные усовершенствования журнала запросов Percona Server. Есть специальная функция под названием «profiling_server», которая может разбить время: http://www.percona.com/docs/wiki/percona-server:features:slow_extended#changes_to_the_log_format

...