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

Будет ли Sphinx хорошим решением, чтобы сервер не завязал с тяжелым чтением MySQL?

Я работаю над сайтом, который, как мне кажется, посещается около 70 тысяч в день, и он использует множество запросов, которые используют UNION's Для примерно 45 различных таблиц эти таблицы обычно варьируются от примерно 15 тыс. строк до примерно 500 тыс. строк в каждой таблице.

Мы оптимизировали query cache как можно лучше, но всякий раз, когда одна из таблиц изменяется и данные в кеше должны быть удалены, сервер начинает блокироваться, и mysql tmp dir заполняется, и нагрузка на сервер становится заоблачной, и для решения проблемы необходимо сделать следующее:

  1. Остановить mysql (загрузка идет нормально)
  2. восстановить таблицы базы данных
  3. очистить кеш от mysql
  4. очистить кэш памяти
  5. восстановить таблицы базы данных снова
  6. перезапустить mysql

Я знаю, что репликация, вероятно, лучшая идея, но, вероятно, и самая дорогая. Так интересно, использует ли Sphinx из http://sphinxsearch.com/ очень бы выручил?

Я использовал его раньше для другого сайта, чтобы получить полнотекстовый поиск по таблицам INNODB, поэтому я немного знаю, как это работает, но не уверен, как он справится с чем-то вроде этого.

Использует ли он собственные методы кеширования? Я бы не хотел менять это и по-прежнему получать те же проблемы со Sphinx.

Редактировать: Ниже приведен снимок экрана EXPLAIN (отсутствует первая строка, были проблемы с программой для создания снимков экрана)

Обновить: Сейчас сайт получает только 30 / k посетителей в день.

Вы должны выявить и решить проблемы с базой данных, 70 000 посещений в день - это не так уж и много, и MySQL способен справиться с таким объемом работы. Вам следует скачать и использовать mysqlreport или аналогичный инструмент для анализа и настройки использования буферов MySQL MyISAM и InnoDB (я бы также рекомендовал переключиться на InnoDB, если вы все еще используете MyISAM). Следующим шагом является включение регистрации медленных запросов в MySQL и ежедневный анализ журнала медленных запросов с помощью pt-query-digest инструмент и EXPLAIN Команда MySQL. Возможно, в вашей базе данных отсутствуют правильные индексы.