Оптимизация SQL-нагрузки

Клиент:

Крупная E-commerce платформа

Сократили количество запросов с 16 685 до 24 за 1.5 часа
Оптимизация SQL-нагрузки

Введение

Клиент обратился с задачей: ускорить загрузку одной из ключевых страниц сайта, где наблюдались задержки вплоть до нескольких секунд. После первичного аудита стало очевидно, что источник проблемы — чрезмерная нагрузка на базу данных: при открытии страницы выполнялось более 16 тысяч SQL-запросов.

Такая нагрузка не только снижала производительность, но и создавала риски перебоев при увеличении трафика. Требовалось в сжатые сроки провести оптимизацию, при этом не затронув основную бизнес-логику и не нарушив функционирование других разделов сайта.

Наша команда провела точечную оптимизацию архитектуры загрузки данных и добилась результата: всего 24 запроса вместо 16 685. Работа заняла не более полутора часов.

Описание системы

Проект представляет собой многофункциональную e-commerce платформу, реализованную на фреймворке Laravel 10 с использованием Eloquent ORM. В качестве базы данных используется MySQL. Клиентская часть построена на Blade и частично — на Vue.js.

Страница, вызвавшая затруднение, выводит каталог товаров. Каждый товар включает изображения, характеристики, параметры фильтрации, информацию о бренде, наличии, а также персонализированные данные пользователя (например, избранное). При высокой связанности данных и без использования механизмов оптимизации это приводило к лавинообразному росту SQL-запросов.

Проблема заключалась не в объёме самих данных, а в методе их выборки: отсутствовал eager loading, что провоцировало эффект N+1, при котором для каждой записи выполняются дополнительные запросы на связанные таблицы.

Вызов: чрезмерное количество SQL-запросов на странице

После подключения инструментов профилирования (Laravel Debugbar, SQL-логирование) было зафиксировано 16 685 запросов при загрузке одной страницы. Основные причины:

  • Запросы к связанным сущностям выполнялись в циклах;
  • Не были определены или задействованы связи между моделями;
  • В шаблонах активно использовались обращения к связям без предварительной загрузки.

При этом заказчик поставил ряд ограничений:

  • Исключить вмешательство в бизнес-логику и API;
  • Решение должно быть масштабируемым;
  • Необходимо соблюдение стандартов Laravel и отсутствие «обходных» решений вроде ручной агрегации данных.

Решение: внедрение механизма eager loading и оптимизация моделей

eager-loading

Оптимизация была выполнена по следующим направлениям:

1

Анализ и определение узких мест.

Были проанализированы все модели, задействованные при выводе страницы, и сопутствующая им логика контроллеров и шаблонов.

Корректировка связей в моделях.

В моделях были уточнены отношения (hasMany, belongsTo, hasOne, morphMany и др.). Это позволило однозначно описать связи между таблицами и задать их явную загрузку при выборке.

2
3

Внедрение eager loading.

Во всех местах, где ранее использовались отложенные обращения к связанным моделям, были добавлены вызовы with() и load(). Это обеспечило загрузку всех необходимых данных одним SQL-запросом с объединением.

Пример ( codepen ) :

Product::with(['images', 'brand', 'filters', 'favorites'])->get();

Оптимизация шаблонов и логики представления.

Были пересмотрены шаблоны Blade: обращения к связям внутри циклов были исключены, логика рендера упрощена, повторяющиеся запросы устранены.

4
5

Тестирование и замеры.

После внедрения изменений были выполнены нагрузочные тесты и повторный аудит SQL-логов. Результат — всего 24 запроса на полную загрузку страницы.

Результаты
query
Количество SQL-запросов снижено с 16 685 до 24.
Среднее время отклика страницы сократилось более чем в 5 раз.
Нагрузка на базу данных снизилась до стабильного уровня даже при пиковом трафике.
Кодовая база приведена в соответствие с рекомендациями Laravel и стала проще в сопровождении.
Работа заняла менее 2 часов от постановки задачи до деплоймента на продакшн.

Другие проекты

VPUT
VPUT

Как мы создали сервис аренды жилья в Болгарии и привели его к 1500 бронированиям за сезон. От идеи до полноценного продукта с SEO и маркетингом.

Разработка веб-приложений на заказ, Дизайн сайтов, SEO-продвижение сайтов
Stooller
Stooller

Переезды без звонков: как мы создали сервис, который сам считает цену, собирает заявки и повышает конверсию.

Разработка веб-приложений на заказ
Trade Bot
Trade Bot

+100 сделок в минуту. В 20 раз быстрее трейдера. Полный контроль в Telegram.

Разработка веб-приложений на заказ, Дизайн сайтов, SEO-продвижение сайтов
Wineship
Wineship

Сайт для винного бренда с умным фильтром, SEO-структурой и легким выбором среди 2000+ вин

Разработка веб-приложений на заказ, Дизайн сайтов
BeFamily
BeFamily

+50% к продажам. Дизайн по законам природы. Сайт в 2 раза быстрее.

Разработка веб-приложений на заказ, Дизайн сайтов, SEO-продвижение сайтов
Ansy
Ansy

Работаем с клиентом 10+ лет. +300% к скорости загрузки. Примерка ковра онлайн.

Разработка веб-приложений на заказ, Дизайн сайтов, SEO-продвижение сайтов
RiseX
RiseX

Как мы вывели криптобиржу на рынок: автоматическое обновление цен, безопасные P2P сделки и 100+ активных трейдеров в первые недели после запуска

Разработка веб-приложений на заказ, Дизайн сайтов, SEO-продвижение сайтов, Интернет-маркетинг
BolgarskiyDom
BolgarskiyDom

Как риелторский сайт в Болгарии вышел из-под фильтров, увеличил органический трафик в 5 раз и стал лидером в своей нише. Полная трансформация: SEO, редизайн, автоматизация и рост продаж.

Разработка веб-приложений на заказ, Дизайн сайтов, SEO-продвижение сайтов, Интернет-маркетинг
Neweurofences
Neweurofences

Как интернет-магазин заборов увеличил видимость в поиске на 25% и улучшил конверсии с помощью SEO и Google Ads. Переезд на новый сайт и оптимизация позиций по ключевым запросам

Разработка веб-приложений на заказ, Дизайн сайтов, SEO-продвижение сайтов
Tetri’s Smile
Tetri’s Smile

Стоматологический бутик, предоставляющий VIP-услуги в Майами: увеличение ROI в 3 раза и рост органического трафика с помощью редизайна сайта, SEO и маркетинга в соцсетях.

SEO-продвижение сайтов, Разработка веб-приложений на заказ, Интернет-маркетинг
SoleaWellness
SoleaWellness

Салон в Майами. Перенос сайта на WordPress, SEO и маркетинг. Результат: ТОП-5, рост трафика и заявок через органику и Google Ads.

Разработка веб-приложений на заказ, SEO-продвижение сайтов
Solea Beauty Salon
Solea Beauty Salon

Как салон в Майами увеличил заявки в 3 раза и органический трафик на 250%. От 0 до 180+ запросов в ТОП-3: реальный кейс роста бизнеса.

Разработка веб-приложений на заказ, SEO-продвижение сайтов
Интернет-магазин очков
Интернет-магазин очков

Интернет-магазин оптики. Разработка сайта, SEO-оптимизация, маркетинг и интеграции. С 0 до 90 000 пользователей в месяц

Разработка веб-приложений на заказ, Дизайн сайтов, SEO-продвижение сайтов
Кейс продвижения и разработки Svetlanadental
Кейс продвижения и разработки Svetlanadental

Svetlanadental – кейс продвижения и разработки сайта стоматологического кабинета в США. Клиника принадлежит врачу с большим опытом и большим количеством наград.

SEO-продвижение сайтов, Интернет-маркетинг
Кейс продвижения и разработки Холистик стоматологии
Кейс продвижения и разработки Холистик стоматологии

Advanced Dental Wellness Center – стоматология в Майами, Форт Лодердейл. Холистик стоматология с особым подходом к лечению.

SEO-продвижение сайтов
Кейс продвижения и разработки MyMoneyArt
Кейс продвижения и разработки MyMoneyArt

Перенос сайта MyMoneyArt на WordPress, SEO, UX-улучшения: +500% трафика, заявки ×6.

SEO-продвижение сайтов
Кейc продвижения и разработки Biomilk.ru
Кейc продвижения и разработки Biomilk.ru

Biomilk – дистрибьютор продуктов питания в Москве и регионах.
+100% органического трафика за 3 месяца, 200 запросов в ТОП-10 Яндекс и Google

Дизайн сайтов, SEO-продвижение сайтов, Интернет-маркетинг
Sutton Advanced Cosmetic Dentistry
Sutton Advanced Cosmetic Dentistry

Продвижение VIP стоматологии на Манхэттене
C 13 до 80 запросов в ТОП-10 Google за полгода

SEO-продвижение сайтов
Кейс продвижения маркетингового агентства Mates China
Кейс продвижения маркетингового агентства Mates China

Mates China – агентство digital-маркетинга, которое помогает продвигать бизнес в Китае через локальные соцсети и маркетплейсы: WeChat, Weibo, Baidu, Douyin, LRB и другие. Мы помогли увеличить трафик в 12 раз, за период в 7 месяцев.

Разработка веб-приложений на заказ, Дизайн сайтов, SEO-продвижение сайтов
VPUT
VPUT

Как мы создали сервис аренды жилья в Болгарии и привели его к 1500 бронированиям за сезон. От идеи до полноценного продукта с SEO и маркетингом

Разработка веб-приложений на заказ, Дизайн сайтов, SEO-продвижение сайтов, Интернет-маркетинг
Stooler
Stooler

Онлайн-сервис с автоматическим расчетом и +40% заказов сразу после запуска

Разработка веб-приложений на заказ, Дизайн сайтов
SoleaDentalSpa
SoleaDentalSpa

Стоматологическая клиника в городе Sunny Isles Beach - увеличили количество заявок в 3 раза за счет поискового трафика и маркетинга. Сайт стали продвигать с нуля, сразу после открытия клиники.

SEO-продвижение сайтов
Webdelo SEO
Webdelo SEO

Подробно о нашем SEO-подходе: от аналитики и аудита до контента, ссылок и рекламы. Узнайте, как мы продвигаем бизнес в топ поисковой выдачи.

SEO-продвижение сайтов, Интернет-маркетинг
Кейс разработки магазина красок Nevapallete.cn
Кейс разработки магазина красок Nevapallete.cn

Разработали сайт художественных красок Nevapallete.cn для китайского рынка: хостинг в Гонконге, китайский домен, быстрая загрузка, запуск в срок.

Разработка веб-приложений на заказ
WineShip
WineShip

Каталог вин с 2000+ бутылками, гибкими фильтрами и системой подбора по объёму и году. Удобный UX и проработанная внутренняя перелинковка.

Разработка веб-приложений на заказ, Дизайн сайтов, Custom Web App Development
Как мы продвигали салон красоты в Jacksonville, Florida
Как мы продвигали салон красоты в Jacksonville, Florida

Продвижение салона красоты Annazur во Флориде: увеличение трафика, локальное ранжирование, оптимизация сайта и рост заявок.

SEO-продвижение сайтов
Кейс сайта стоматологии Новая орбита
Кейс сайта стоматологии Новая орбита

SEO-кейс стоматологии: +50-80 целевых звонков/мес, топ по запросам, рост трафика с февраля 2023 благодаря контенту и тех. улучшениям.

SEO-продвижение сайтов
Berger 3D Design
Berger 3D Design

Сайт-визитка с каталогом WordPress для немецкого производителя B2B-системы хранения измерительного оборудования. Удобный каталог, расчет доставки, VAT-валидация.

Дизайн сайтов, SEO-продвижение сайтов, Интернет-маркетинг
SoleaBrickellSpa
SoleaBrickellSpa

Вы хотите, чтобы ваш сайт не просто существовал, а приносил реальных клиентов? Мы знаем, как это сделать. Кейс SoleaBrickellSpa — наглядное подтверждение нашей экспертизы и эффективного подхода.

KidsJumpTech
KidsJumpTech

От сайта на грани коллапса до 40 заявок за выходные

Alanta Clinic
Alanta Clinic

Как стоматология с одностраничным сайтом удвоила число пациентов из своего района

SEO-продвижение сайтов
Digital Marketing for Dental Clinics
Digital Marketing for Dental Clinics

Digital marketing for dental clinics: SEO, Google Maps, and targeted ads. Over 15 years of experience—50,000+ views and 4,860 leads monthly. Grow your clinic with Webdelo!

Настроили сервис подбора объявлений – сэкономили 72% времени на изменения
Настроили сервис подбора объявлений – сэкономили 72% времени на изменения

Оптимизация автоматического подбора объявлений.

Разработка веб-приложений на заказ