Назад | Перейти на главную страницу

MySQL - Innodb, поиск

Недавно я переключился с myisam на innodb в одной из моих таблиц mysql. Раньше я использовал MATCH (). Поскольку innodb не поддерживает match (), я решил использовать LIKE.

Теперь у меня проблема. Моя таблица имеет размер 190,6 МБ и 234 083 строки. Когда я использую LIKE, мой сервер работает медленно.

Я переключился на innodb с myisam, чтобы не блокировать стол.

Что мне делать? Спасибо!

Как вы знаете, таблицы MyISAM не очень хорошо справляются с ситуациями с большим объемом записи. InnoDB там лучше; но у них нет полнотекстовых индексов (чтобы использовать match()). Это сводится к нескольким ответам:

  • у вас могут быть таблицы с большим количеством записей на InnoDB и полнотекстовые (должно быть только одно или два) на MyISAM

  • если они такие же; или, если в нескольких таблицах есть большие тексты, то вынести эти тексты в единую (MyISAM) таблицу с только текстовыми и ключевыми полями для СОЕДИНЕНИЯ с любой другой таблицей (ами).

  • если сами тексты содержат много текста, примите меры и используйте специальную поисковую систему (Sphinx, Lucene и т. д.)

Это вопрос, которым я тоже занимаюсь. Кто-то указал мне на Сфинкс двигатель.

Вот пост о производительности на Форумы MySQL

Пока не прессинг, так что еще не тестировал. Если вы пойдете по этому пути, дайте мне знать, что вы узнали о производительности.