Измерьте полный запрос и отдельно SQL, количество обращений, сериализацию и ожидание соединения. N+1 — один запрос за списком плюс отдельные запросы за связями каждой записи.
Представьте, что эндпоинт получения каталога фильмов начал сильно тормозить. Как вы будете диагностировать проблему и искать медленные SQL-запросы? Что такое проблема N+1 и как она решается на уровне ORM и чистых SQL-запросов?
Измерьте полный запрос и отдельно SQL, количество обращений, сериализацию и ожидание соединения. N+1 — один запрос за списком плюс отдельные запросы за связями каждой записи.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Измерьте полный запрос и отдельно SQL, количество обращений, сериализацию и ожидание соединения. N+1 — один запрос за списком плюс отдельные запросы за связями каждой записи.
В ORM используйте подходящие eager-loading механизмы: select_related для одиночных связей, prefetch_related для коллекций. В SQL помогают JOIN, пакетная выборка по ключам и агрегации. Для медленных отдельных запросов изучите план, статистику и индексы. Не загружайте все связанные объекты, если нужны только counts, и повторите замер на сопоставимых данных.