Я работаю над сайтом, который, по моим подсчетам, посещают около 70 тыс. человек в день. На нем используется множество запросов, которые задействуют UNION's
около 45 различных таблиц. Обычно в каждой таблице содержится от 15 тыс. до 500 тыс. строк.
Мы оптимизировали все query cache
настолько хорошо, насколько это было возможно, но всякий раз, когда одна из таблиц изменяется и данные в кэше приходится удалять, сервер начинает блокироваться, MySQL tmp dir
заполняется, нагрузка на сервер резко возрастает. Чтобы исправить эту проблему, необходимо сделать следующее:
- Остановить mysql (загрузка возвращается к норме)
- восстановить таблицы базы данных
- очистить кэш из mysql
- очистить кэш памяти
- восстановить таблицы базы данных снова
- перезапустить mysql
Я знаю, что репликация, вероятно, лучшая идея, но, вероятно, и самая дорогая. Так что интересно, если использовать Sphinx
изhttp://sphinxsearch.com/очень помогло бы?
Я уже использовал его раньше для другого сайта, чтобы иметь возможность полнотекстового поиска по таблицам INNODB, поэтому немного знаю, как он работает, но не уверен, как он справится с чем-то подобным.
Использует ли он собственные методы кэширования? Не хотелось бы перейти на это и получить те же проблемы со Sphinx.
Редактировать:Ниже представлен скриншот EXPLAIN
(отсутствует первая строка, возникли проблемы с программой создания скриншотов)
Обновлять:Сейчас сайт посещают всего 30 тыс. человек в день.
решение1
Вам следует выявить и решить проблемы с базой данных, 70 тыс. посещений в день — это не так уж много, и MySQL способен справиться с таким объемом работы. Вам следует загрузить и использовать mysqlreport
или аналогичный инструмент для анализа и настройки использования буферов MySQL MyISAM и InnoDB (я бы также рекомендовал перейти на InnoDB, если вы все еще используете MyISAM). Следующий шаг — включить ведение журнала медленных запросов в MySQL и ежедневно анализировать журнал медленных запросов с помощью pt-query-digest
инструмента и EXPLAIN
команды MySQL. Вероятно, в вашей базе данных отсутствуют надлежащие индексы.