Много Update выстраиваются в очередь, как оптимизировать Mysql таблицу?

Есть таблица, MyISAM, раз в 5 минут много UPDATE которые выстраиваются в очередь и 2-3 минуты заносятся в базу, в этот момент все SELECT зависают и ждут окончания UPDATE'ов. Стоит ли попробовать сменить MyISAM на InnoDB? Поможет ли это чтобы селект не ждал апдейтов? (актуальность данных не страдает).

Размер таблицы 35.000.000+ записей
  • Вопрос задан
  • 2686 просмотров
Пригласить эксперта
Ответы на вопрос 3
@bohdan-shulha
Да, попробуйте InnoDB и попробуйте обернуть запросы в транзакцию. Можно пробовать делать PREPARE, тоже даст долю ускорения.

Как вариант, можно попробовать LOAD DATA (правда, он не всем и не всегда подходит): с INSERT работает молниеносно, с UPDATE - нужно пробовать, но скорость всё равно будет гораздо выше, чем просыми запросами.
Ответ написан
Комментировать
Однозначно отказываться от MyISAM.
Имел аналогичную проблему и года 3 как только не оптимизировал. Потом перешел на MariaDB и забыл что такое висит очередь.
Но прежде чем включать InnoDB нужно очень грамотно настроить MySQL сервер. Иначе работать будет еще хуже. Базовой конфиг InnoDB как правило вообще не рабочий.
Ответ написан
Комментировать
morozovdenis
@morozovdenis
оберните update в транзакцию без блокировки на чтение, тогда select ждать не будет, но тогда select может прочитать на середине update-ов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы