Сегодня ночью решил посвятить оптимизации и анализу производительности mysql, так как цифры внутреннего состояния MySQL показывало очень большое количество медленных запросов (Slow_queries), заблокированных таблиц и не используемых индексов.
Процесс сохранения медленных запросов прост, достаточно в файле конфигурации my.cnf (обычно лежит в /etc/mysql) расскоментировать строки:
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 10
log-queries-not-using-indexes
После сохранения файла, необходимо перезагрузить сервис MySQL, теперь ваши логи будут складироваться и размер лога стремительно будет расти.
Погуглив сети был найден самый простой и легкий анализатор лог файлов, Percona Toolkit как его установить и проанализировать лог файл расскажу подробнее, данное руководство проводил на CENTOS 6 и все получилось успешно:
- Авторизуемся в ssh
- В командной строке прописываем
wget http://percona.com/get/pt-query-digest
- Затем прописываем chmod +x ./pt-query-digest
- Вводим команду ./pt-query-digest /var/log/mysql/mysql-slow.log > digest-output.txt
- Вводим коммаду pwd чтобы узнать в какой директории мы находимся (по умолчанию это /root)
- Заходим в папку /root через любой файловый менеджер и скачиваем оттуда файл digest-output.txt
- Для разбора файла используем следующее руководство
- Оптимизируем тройку самых тяжелых запросов и сервер станет работать значительно быстрее
- Остальные оптимизации можно провести с файлом my.cnf - Ключевые параметры tmp_table_size, key_buffer_size, table_cache.
- Полезная статья про оптимизацию BY RAND() запросов
По выполнению этих простых пунктов ваш сервер начнет заметно шустрее работать.
Внимание! Данная статья была написана более полугода назад, актуальность материала и состояние жизни ссылок не гарантируется! Воспользуйтесь дополнительными параметрами для поиска необходимого вам контента! Приносим свои извинения...