Недавно я переключился с myisam на innodb в одной из моих таблиц mysql. Раньше я использовал MATCH (). Поскольку innodb не поддерживает match (), я решил использовать LIKE.
Теперь у меня проблема. Моя таблица имеет размер 190,6 МБ и 234 083 строки. Когда я использую LIKE, мой сервер работает медленно.
Я переключился на innodb с myisam, чтобы не блокировать стол.
Что мне делать? Спасибо!
Как вы знаете, таблицы MyISAM не очень хорошо справляются с ситуациями с большим объемом записи. InnoDB там лучше; но у них нет полнотекстовых индексов (чтобы использовать match()
). Это сводится к нескольким ответам:
у вас могут быть таблицы с большим количеством записей на InnoDB и полнотекстовые (должно быть только одно или два) на MyISAM
если они такие же; или, если в нескольких таблицах есть большие тексты, то вынести эти тексты в единую (MyISAM) таблицу с только текстовыми и ключевыми полями для СОЕДИНЕНИЯ с любой другой таблицей (ами).
если сами тексты содержат много текста, примите меры и используйте специальную поисковую систему (Sphinx, Lucene и т. д.)
Это вопрос, которым я тоже занимаюсь. Кто-то указал мне на Сфинкс двигатель.
Вот пост о производительности на Форумы MySQL
Пока не прессинг, так что еще не тестировал. Если вы пойдете по этому пути, дайте мне знать, что вы узнали о производительности.