Ускорение медленных запросов MySQL

Выявление медленных запросов и их ускорение индексированием связующих полей

При установке новых модулей Drupal'а, последние не всегда создают индексы, в таблицах, которые они используют. Что приводит, при наличии большого объема данных, к меленному выполнению запросов.

В данном случае методика увеличения производительности сводится к индексированию связующих полей в запросах  select, что значительно повышает скорость выборки данных.

Для анализа этой ситуации необходимо включить в my.cnf ведение лога медленных запросов в mysql.

# Минимальное время запроса, которое не будет помещено в лог.
long_query_time = 3 
# Файл в котором будут отображаться слишком долгие запросы.
# можно использовать опцию -mysqld -log-slow-queries=file
log-slow-queries=/var/log/mysqld/slowquery.log
log-slow-admin-statements
Обращаем Ваше внимание, что данная настройка может быть выполнена либо на Вашей локальной машине, либо на VPS хостинге. На виртуальном хостинге ввести данную настройку не представляется возможным.

При выполнении запросов к БД запросы, выполняемые дольше long_query_time будут записываться в указанный лог-файл.

Для вступления настроек в силу демон mysql должен перечитать конфигурацию

/etc/init.d/mysqld force-reload

По истечении некоторого времени (1-2 суток) или после стресс-теста сайта необходимо проанализировать лог файл медленных запросов и выявить наиболее часто повторяющиеся.

На практике необходимо искать сложные select-запросы выяснять набор связующих полей и проверять наличие индексов в используемых таблицах. При отсутствии индексов нужно их создать.

Индексирование обеспечит быстрое выполнение запросов, что увеличит скорость генерации страницы и снизит нагрузку на mysql.

Вам также может помочь