Наиболее зрелый первый шаг — снять трассировку, найти запросы и затем настроить выборочную загрузку связей. Число 35 само по себе ещё не объясняет причину задержки.
Django ORM создаёт 35 запросов на страницу каталога. Какое первое решение наиболее зрелое?
Наиболее зрелый первый шаг — снять трассировку, найти запросы и затем настроить выборочную загрузку связей. Число 35 само по себе ещё не объясняет причину задержки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Django ORM создаёт 35 запросов на страницу каталога. Какое первое решение наиболее зрелое?
- Применить select_related к известным одиночным связям после проверки профиля.
- Поставить Redis перед маршрутом без анализа SQL.
- Включить prefetch_related для всех связей модели.
- Игнорировать проблему, пока средняя задержка низкая.
- Снять трассировку, найти запросы и затем настроить выборочную загрузку связей.
- Переписать маршрут на FastAPI.
Ответ
Наиболее зрелый первый шаг — снять трассировку, найти запросы и затем настроить выборочную загрузку связей. Число 35 само по себе ещё не объясняет причину задержки.
Профиль покажет повторяющиеся запросы, объём результатов и затраты времени. После этого select_related применяют к нужным одиночным связям, prefetch_related — к конкретным наборам связанных объектов. Первый вариант списка тоже разумен, но уже предполагает выполненную диагностику. Слепой prefetch всех связей может увеличить память и передачу данных; Redis и смена фреймворка маскируют проблему вместо выяснения причины. Закрепите исправление точечной проверкой числа запросов и latency характерной страницы.