Вы запускаете сайт на 1С-Битрикс, но страницы грузятся по 5–10 секунд. Клиенты уходят, менеджеры жалуются. Вы проверили хостинг, кэширование, но причина неясна. Slow query log — журнал медленных запросов MySQL — показывает настоящих виновников. Без него вы гадаете, а каждая секунда задержки стоит денег: конверсия падает, бюджет на рекламу сгорает. Мы поможем проанализировать журнал, найти самые тяжёлые запросы и оптимизировать их. За 2–3 дня вы получите отчёт и готовые решения, а экономия от ускорения окупит вложения за неделю.
В этой статье расскажем, как включить slow log, какие утилиты использовать для анализа (mysqldumpslow, pt-query-digest) и какие типичные запросы тормозят Битрикс. А главное — покажем на реальном кейсе, как после простого создания индекса время запроса упало с 3 секунд до 10 миллисекунд. Если хотите решить проблему быстро — свяжитесь с нами: проведём аудит за 1 день.
Почему медленные запросы — главная проблема Битрикс?
Основная причина — неоптимальные запросы к базе данных. Битрикс активно использует инфоблоки, свойства, торговые предложения. При большом количестве элементов без правильных индексов каждый запрос превращается в полное сканирование таблицы. Slow query log фиксирует такие запросы. Вот три типичные группы проблем:
- Запросы к
b_iblock_elementбез индекса поIBLOCK_IDиSORT. -
LIKEс ведущим процентом при фильтрации. -
COUNT(*)наb_sale_orderс миллионами записей. Наш опыт: в 80% случаев достаточно добавить 2–3 составных индекса, чтобы убрать 90% медленных запросов. Это экономит бюджет на дорогостоящий апгрейд серверов.
Как включить и настроить slow query log?
В my.cnf (или my.ini на Windows):
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 0.5
log_queries_not_using_indexes = 1
min_examined_row_limit = 100
long_query_time = 0.5 — запросы дольше 500 мс. Для активной диагностики ставьте 0.1 или даже 0. log_queries_not_using_indexes = 1 — ловит запросы без индексов независимо от времени. min_examined_row_limit = 100 — не логировать быстрые запросы по маленьким таблицам.
Без перезапуска MySQL можно включить динамически:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 0.5;
SET GLOBAL log_queries_not_using_indexes = 1;
Подробнее о slow log можно прочитать в Wikipedia.
Как найти медленные запросы?
Сырой лог читать неудобно. Используйте утилиты агрегации:
mysqldumpslow — встроен в MySQL:
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log
-s t — сортировка по суммарному времени, -t 10 — топ 10 запросов. Показывает шаблон запроса и суммарное/среднее время.
pt-query-digest (Percona Toolkit) — значительно информативнее: показывает процентиль времени выполнения, количество уникальных запросов, нагрузку на сервер.
| Утилита | Скорость | Информативность | Доп. возможности |
|---|---|---|---|
| mysqldumpslow | Быстро | Базовая | Нет |
| pt-query-digest | Медленнее | Детальная (процентили, профили) | Гибкая фильтрация, отчёты |
pt-query-digest показывает не только среднее время, но и распределение — в 3 раза детальнее, чем mysqldumpslow.
Типичные медленные запросы в Битрикс
| Проблема | Пример SQL | Решение |
|---|---|---|
| Полный скан каталога | SELECT * FROM b_iblock_element WHERE IBLOCK_ID=5 ORDER BY SORT |
Составной индекс (IBLOCK_ID, SORT) |
| LIKE без индекса | SELECT * FROM b_iblock_element_property WHERE VALUE LIKE '%поиск%' |
FULLTEXT индекс или MATCH AGAINST |
| COUNT(*) на заказы | SELECT COUNT(*) FROM b_sale_order WHERE STATUS='N' |
Индекс по STATUS или партиционирование |
Добавление индекса в первом случае снижает время выполнения с 3 секунд до 0.01 секунды — в 300 раз быстрее.
Кейс: как мы ускорили каталог в 20 раз
Клиент — интернет-магазин с 50 000 товаров. Страницы каталога грузились 6–8 секунд. Slow query log показал запрос к b_iblock_element_property с LIKE '%текст%'. Создали FULLTEXT-индекс и переписали запрос на MATCH AGAINST. Время выполнения упало с 2.3 с до 0.12 с. Общая загрузка страницы сократилась до 1.2 секунд. MySQL FULLTEXT
Хотите так же? Получите консультацию — оценим ваш случай за час.
Что входит в работу
- Анализ slow query log за 7 дней (или указанный период).
- Идентификация топ-10 медленных запросов.
- EXPLAIN и рекомендации по индексам.
- Реализация оптимизаций (создание/изменение индексов, рефакторинг запросов).
- Отчёт с метриками до/после.
Процесс работы
- Подключение slow log на вашем сервере (удалённо).
- Сбор лога за репрезентативный период (обычно 1–2 дня).
- Анализ с помощью pt-query-digest.
- Выдача отчёта с приоритетами.
- Согласование и реализация изменений.
- Повторный замер для подтверждения.
Сроки: от 1 до 5 дней в зависимости от сложности.
Почему стоит довериться нам?
- 7+ лет опыта с Битрикс.
- 300+ успешных проектов.
- Сертифицированные специалисты 1С-Битрикс.
- Работаем по договору с гарантией результата.
Готовы разобраться с тормозами? Свяжитесь с нами — оценим проект бесплатно и предложим решение за 1 день.







