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

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

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

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

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

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

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

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

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

1 ответ

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

Другие вопросы по тегам