Нашел, кто гадил в мой mysql-cервер

Оказалось достаточно включить лог запросов, которые не используют индексы 😃 . log-queries-not-using-indexes называется, если в конфиге. Были запросы, которые выполнялись ВСЕГДА быстрее секунды, но при этом сканировали полностью таблицу на 70 000 строк.

Это было 3 мода под воблу одного и того же человека 😦 . Я фигею, дорогая редакция… За несколько лет никто не исправил. А потом люди ставят какой-нибудь коряво писанный кеш и ссут кипятком, что у них все ускорилось. Лечат головную боль топором.

И главное не сказать, чтобы моды были откровенным дерьмом (такое не ставлю из принципа). Написаны они относительно неплохо. Но на больших досках явно по-человечески не обкатывались.

После добавления индексов, mysql в топе сразу уехал вниз, а наверху остались только php-процессы. Нагрузка тоже упала некисло. Раза в полтора точно.

Осталось понять, почему MEMORY-таблица сессий упорно отказывается использовать индексы для выборки и сортировок. Там правда 1500 записей всего, из которых регулярно выбирается 500-700. Возможно, оптимизатор mysql забивает на индексы, потому что без них быстрее получается. Я как бы против ничего не имею, но плохо то, что валится мусор в лог медленных запросов и в статистику.

Из заделов на будущее - надо сделать автоматическую разбивку длинных тем. Уже есть такие, в которых по 10 тысяч постов, ну и ясен пень, там fullscan на перелистывании. Отчасти конечно спасает querycache, но это все равно не дело.

Да, кстати, странная какашка с подскакиванием числа mysql-коннектов до максимума пропала сама собой. Сдается мне, в федоре у php был кривой не только libxml. Сыт этим бета-тестингом по самое немогу. Буду разучивать debian-овские сборки. Зря я убунту похоже ругал, надо было сразу с aptitude и sysvconfig разобраться.

  • 927
Comments
lelik

Я предупреждал - индексы наше фсио 😃 А хинтов оптимизации у мышцы нет (как у оракла) ?

Vitaly

Ну там относительно прописные истины.

Главный хинт оптимизации непосредственно под воблу - не ставить чужих аддонов. Сама-то вобла прямыми руками написана. Не считая перелистывания длинных топиков - но это у всех так.

kmike

Осталось понять, почему MEMORY-таблица сессий упорно отказывается использовать индексы для выборки и сортировок. Там правда 1500 записей всего, из которых регулярно выбирается 500-700. Возможно, оптимизатор mysql забивает на индексы, потому что без них быстрее получается.

В таких таблицах по умолчанию используется другой тип индекса - HASH. Который умеет только искать конкретное значение, но зато очень-очень быстро.

По идее можно сделать и BTREE индекс, но для такого кол-ва записей это особого смысла не имеет.