Медленные запросы MySQL находят по журналу медленных запросов (slow query log): включают запись всего, что выполняется дольше порога в 1-2 секунды, собирают статистику несколько дней, затем разбирают лидеров командой EXPLAIN и чинят - индексами, переписыванием запроса или кэшированием результата. В Битрикс есть и свой инструмент: монитор производительности показывает все SQL-запросы страницы с временем выполнения прямо в админке. Ниже - весь путь от «сайт тормозит» до конкретного запроса и его лечения.
Как медленные запросы MySQL проявляются на сайте
- Долгое ожидание первого байта - страница «думает» 2-5 секунд до начала загрузки
- Тормозит фильтр и поиск каталога - чем больше отмечено параметров, тем дольше ответ
- Админка виснет на списках - разделы с товарами и заказами открываются десятки секунд
- Сайт падает при трафике - запросы копятся в очередь, посетители получают 502 и 503
- Скрипты обрываются по тайм-ауту - классика из нашей статьи про Maximum execution time exceeded
Как найти медленные запросы MySQL: пошагово
- Включите slow query logВ настройках MySQL задайте long_query_time = 1 и путь к журналу. Накладные расходы минимальны, включать на рабочем сайте безопасно.
- Соберите статистику 3-7 днейЖурнал должен захватить будни, выходные и часы пик. Сводку по лидерам удобно смотреть утилитами mysqldumpslow или pt-query-digest.
- Разберите лидеров через EXPLAINКоманда показывает план выполнения: если в колонке type стоит ALL, а в rows - сотни тысяч, MySQL перебирает таблицу целиком вместо работы по индексу.
- Сверьтесь с монитором БитриксНастройки - Производительность - вкладка для разработчиков: видно, какие запросы генерирует конкретная страница и сколько каждый длится.
- Зафиксируйте скорость до правокЗамерьте время ответа проблемных страниц. Без базовой точки вы не докажете эффект и не заметите регресс.
Чем лечат медленные запросы: индексы, код, кэш
Индексы - первое лекарство: поля, по которым фильтруют, сортируют и связывают таблицы, должны быть проиндексированы. Один правильный составной индекс ускоряет запрос в десятки раз.
Второе - переписывание. Типичная болезнь проектов на Битрикс - выборки в цикле: компонент получает список товаров, а затем для каждого делает отдельный запрос за ценами или картинками. Сто товаров - сто лишних запросов на страницу. Лечится одной общей выборкой с нужными полями.
Третье - кэширование: результат тяжёлого, но редко меняющегося запроса (меню, фильтры, блоки главной) складывается в кэш и пересчитывается раз в час, а не при каждом открытии страницы.
База тормозит, а времени разбираться нет?
Проведём аудит: включим журналы, найдём тяжёлые запросы, покажем отчёт «что тормозит и почему» и ускорим - индексами, правками кода и кэшированием.
Сколько стоит оптимизация медленных запросов
Разбор и ускорение типовых тяжёлых запросов - от 100-200 BYN разово: аудит журналов, индексы, точечные правки компонентов. Глубокая оптимизация крупного каталога с переработкой выборок и кэшированием - от 300 до 800 BYN, срок 3-7 дней. На абонентской поддержке контроль базы идёт постоянно: журналы, метрики и реакция на деградацию входят в тариф.
Частые вопросы о медленных запросах
Почему запросы MySQL стали медленными, хотя код не меняли?
Поможет ли просто взять сервер мощнее?
Что такое EXPLAIN простыми словами?
Опасно ли включать slow query log на боевом сайте?
Медленные запросы - самая благодарная оптимизация: пара индексов и переработанная выборка ощущаются посетителями сразу. Не хотите копаться в EXPLAIN сами - передайте базу нам: в рамках доработки сайтов найдём и ускорим узкие места. С 2013 года и 450+ проектов мы насмотрелись на все варианты тормозов. Диагностика бесплатная, смета - за 1 день.












