Django ORM создаёт 35 запросов на страницу каталога. Какое первое решение наиболее зрелое?

Наиболее зрелый первый шаг — снять трассировку, найти запросы и затем настроить выборочную загрузку связей. Число 35 само по себе ещё не объясняет причину задержки.

Короткий ответ

Что ответить на собеседовании

Наиболее зрелый первый шаг — снять трассировку, найти запросы и затем настроить выборочную загрузку связей. Число 35 само по себе ещё не объясняет причину задержки.

Подробный разбор

Ответ с пояснениями

Условие

Django ORM создаёт 35 запросов на страницу каталога. Какое первое решение наиболее зрелое?

  • Применить select_related к известным одиночным связям после проверки профиля.
  • Поставить Redis перед маршрутом без анализа SQL.
  • Включить prefetch_related для всех связей модели.
  • Игнорировать проблему, пока средняя задержка низкая.
  • Снять трассировку, найти запросы и затем настроить выборочную загрузку связей.
  • Переписать маршрут на FastAPI.

Ответ

Наиболее зрелый первый шаг — снять трассировку, найти запросы и затем настроить выборочную загрузку связей. Число 35 само по себе ещё не объясняет причину задержки.

Профиль покажет повторяющиеся запросы, объём результатов и затраты времени. После этого select_related применяют к нужным одиночным связям, prefetch_related — к конкретным наборам связанных объектов. Первый вариант списка тоже разумен, но уже предполагает выполненную диагностику. Слепой prefetch всех связей может увеличить память и передачу данных; Redis и смена фреймворка маскируют проблему вместо выяснения причины. Закрепите исправление точечной проверкой числа запросов и latency характерной страницы.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее