Включение slow_query_log и log_queries_not_using_indexes помогут выявить медленные запросы и запросы без индексов, которые влияют на производительность MySQL сервера.
Подключимся к MySQL серверу и посмотрим текущие параметры:
mysql -u root -p
SHOW GLOBAL VARIABLES LIKE 'slow\_%';
SHOW GLOBAL VARIABLES LIKE 'long_query_time';
SHOW GLOBAL VARIABLES LIKE 'log_queries_not_using_indexes';
Изменить эти параметры без перезапуска MySQL можно так (замечу что в версиях MySQL ниже 5.7 slow_query_log называется log_slow_queries):
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';
SET GLOBAL long_query_time = 5;
SET GLOBAL slow_query_log = 'ON';
Для включения логирования запросов без индексов:
SET GLOBAL log_queries_not_using_indexes = 'ON';
long_query_time указывает минимальное время выполнения запроса в секундах, после которого он считается медленным, по умолчанию 10 секунд.
Можно также указать эти параметры в файле конфигурации:
slow_query_log=ON
slow_query_log=/var/log/mysql/slow.log
long_query_time=5
log_queries_not_using_indexes=ON
И перезапустить MySQL сервере чтобы применить изменения:
sudo /etc/init.d/mysql restart
Для более читаемого формата можно использовать утилиту pt-query-digest:
apt install percona-toolkit
pt-query-digest /var/log/mysql/slow.log > /var/log/mysql/slow_ixnfo.com.txt
Не забываем отключить эти параметры после завершения анализа логов:
SET GLOBAL slow_query_log = 'OFF';
SET GLOBAL log_queries_not_using_indexes = 'OFF';
Смотрите также мои статьи:
Несоответствие времени в логах ошибок и медленных запросов
Установка и использование mysqltuner.pl
Как изменить join_buffer_size