Генеральный MySQL заморозить - PullRequest
       7

Генеральный MySQL заморозить

0 голосов
/ 20 февраля 2009

Наш сервер MySQL ведет себя странно - выполнение тяжелого запроса на одной таблице в значительной степени заблокирует его, на другой запрос не будет получен ответ, даже если он является тривиальным для полностью несвязанной таблицы (например, SELECT по первичному ключу, INSERT или даже EXPLAIN) - он просто будет ждать окончания тяжелого.

У меня действительно нет идей, что может быть причиной этого - есть много свободных потоков, процессор занят состояние ожидания / ожидания, сеть свободна, много памяти ... и т.д.

У кого-нибудь есть идеи, что искать?

1 Ответ

0 голосов
/ 20 февраля 2009

Сколько памяти имеет MySQL? Я предполагаю, что он должен идти на диск для временных таблиц, и это может быть убийственно. Насколько велик ваш innodb_buffer_pool_size в вашем файле my.cnf / my.ini? Увеличивая это (что увеличивает использование памяти), меньшие запросы (и запросы, которые должны выполнять много сортировки) не должны будут попадать на диск.

В следующий раз, когда запрос начнет делать это для вас, войдите в MySQL, выполните «show full processlist» и запишите, что там. Если вы выполняете EXPLAIN или DESCRIBE по медленному запросу, что это? Включает ли это примечание, что оно собирается во временную таблицу?

Когда MySQL начинает использовать временные таблицы, вещи могут казаться умирающими, особенно если у вас нет быстрого диска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...