Так иногда называют обратную крайность борьбы с N+1: вместо множества запросов предзагружают слишком большой граф объектов. Запросов мало, но Python тратит чрезмерно много памяти на данные и связи.
Что такое N+1 в обратную сторону и как prefetch-логика может перегрузить память Python-процесса?
Так иногда называют обратную крайность борьбы с N+1: вместо множества запросов предзагружают слишком большой граф объектов. Запросов мало, но Python тратит чрезмерно много памяти на данные и связи.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Так иногда называют обратную крайность борьбы с N+1: вместо множества запросов предзагружают слишком большой граф объектов. Запросов мало, но Python тратит чрезмерно много памяти на данные и связи.
prefetch_related может материализовать связанные наборы для всех выбранных родителей, включая те, которые не нужны ответу. При большом fan-out итоговый объём намного больше основной выборки. Ограничьте страницу родителей, поля и дочерние записи, используйте фильтрованный Prefetch, агрегаты или пакетную обработку. Смотрите не только число SQL, но и RSS, количество созданных объектов, время сериализации и объём ответа. Сам термин не является отдельным стандартным видом N+1.