Настройка query cache MySQL для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка query cache MySQL для 1С-Битрикс
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1322
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    915
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    663
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    811
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    710
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1043

Вы замечали, что после добавления нового товара в каталог сайт на несколько секунд «задумывается»? Или что страницы с фильтрами грузятся быстрее, но периодически проседают? Вполне вероятно, что проблема в стандартном механизме кэширования запросов MySQL — Query Cache. На неправильных настройках он вместо ускорения вызывает постоянные инвалидации кэша и рост latency. Мы — команда с 7-летним опытом поддержки Битрикс-проектов — разберём, как извлечь из Query Cache максимум без подводных камней. За 3 рабочих дня настроим конфигурацию под ваш профиль нагрузки, гарантируем прирост производительности. Наш опыт — более 50 успешных оптимизаций для интернет-магазинов и корпоративных порталов на Битрикс.

Когда Query Cache помогает, а когда вредит

Query Cache эффективен при высоком соотношении чтений к записям (больше 10:1), стабильном каталоге с редкими обновлениями цен и остатков, относительно небольшом наборе повторяющихся запросов. Вреден при активной торговле с частыми обновлениями b_catalog_store_product и b_catalog_price, при использовании агентов Битрикс с записью в БД каждую минуту, при репликации master-slave (Query Cache не реплицируется, создаёт расхождения).

Важно: в MySQL 8.0 Query Cache полностью удалён. MariaDB сохранила его как опциональный компонент. Если работаете на MySQL 8.0+, альтернатива — ProxySQL Query Cache или кэширование на уровне приложения через Redis/Memcached.

Как мы определяем профиль нагрузки

Используем pt-query-digest для сбора всех запросов за период, анализируем соотношение read/write для ключевых таблиц Битрикс: b_catalog_price, b_catalog_store_product, b_iblock_element, b_sale_basket. Если количество запросов на обновление превышает 10% от общего числа, Query Cache скорее всего принесёт больше вреда.

Например, в одном проекте интернет-магазина с 200 000 товаров и частыми обновлениями остатков (каждые 15 минут) включённый Query Cache вызывал падение hit rate до 5% и рост времени ответа в 2 раза. После отключения latency снизился на 25%.

Какие параметры конфигурации оптимальны

Рекомендуемые настройки для Битрикс:

Параметр Значение Комментарий
query_cache_type 1 (ON) Включаем
query_cache_size 256M Не более 512M, оптимум 128-256M
query_cache_limit 2M Максимальный размер одного кэшируемого запроса
query_cache_min_res_unit 4096 Минимальный блок выделения памяти

По данным MariaDB Knowledge Base, размер кэша не должен превышать 512 МБ, так как больший объём приводит к фрагментации и падению производительности.

Рекомендации для разных типов нагрузки:

Тип нагрузки Действие с Query Cache Альтернатива
Преимущественно чтение (каталог, витрина) Включить 256M, лимит 2M
Активные обновления (интернет-магазин, CRM) Отключить ProxySQL Cache / Redis
Смешанная, с репликацией Отключить или использовать MariaDB Кэш на уровне приложения

Почему мониторинг так важен

После включения смотрим статусные переменные:

SHOW GLOBAL STATUS LIKE 'Qcache%';

Ключевые метрики:

Метрика Описание Целевое значение
Qcache_hits / (Com_select) Hit rate >30%
Qcache_lowmem_prunes Вытеснения из-за нехватки памяти <10/min
Qcache_not_cached Некэшируемые запросы Стабильно

Мониторинг проводим после прогрева в течение 1-2 часов под реальной нагрузкой. Используем Grafana + Prometheus для визуализации. Подробнее читайте в документации MariaDB и Wikipedia.

Как выглядит процесс работы

  1. Анализ: сбор логов, определение профиля нагрузки, оценка текущей конфигурации.
  2. Проектирование: выбор стратегии (включение с параметрами, отключение, замена на Redis/ProxySQL).
  3. Реализация: настройка конфигурации MySQL, изменение my.cnf, перезапуск MySQL (если возможно без простоя).
  4. Тестирование: под нагрузкой, замер производительности до и после.
  5. Документирование: фиксация параметров, инструкция по обслуживанию.

Сроки выполнения: от 1 до 3 рабочих дней в зависимости от сложности и доступности дампов.

Что входит в услугу

  • Диагностика текущей конфигурации MySQL.
  • Сбор и анализ профиля нагрузки с помощью pt-query-digest.
  • Подбор оптимальных параметров Query Cache (или обоснованный отказ).
  • Настройка параметров на сервере (без простоя, с возможностью отката).
  • Отчёт с результатами до и после.
  • Рекомендации по дальнейшей оптимизации (если нужна замена на Redis/Memcached).

Типичные ошибки

  • Установка query_cache_size более 512 МБ — приводит к фрагментации.
  • Отсутствие мониторинга hit rate — нельзя оценить эффективность.
  • Включение Query Cache на MySQL 8.0 — эта версия не поддерживает его.
  • Игнорирование репликации — Query Cache не реплицируется.

Правильная настройка Query Cache снижает затраты на серверные ресурсы на 20-40% за счёт уменьшения нагрузки на CPU и диск. Свяжитесь с нами для диагностики вашего Битрикс-проекта. Мы оценим текущую нагрузку и предложим оптимальные параметры. Гарантируем прирост производительности или возврат к исходной конфигурации.