awesome-everything EN
↑ Обратно к восхождению

Производительность

N+1: тест с краткими ответами

Суть Промпты на свободное воспроизведение через весь юнит N+1. Сначала ответь своими словами, потом раскрой модельный ответ и сравни.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 14 min

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

Цель

Восстановить хребет юнита — почему число trip’ов задаёт стоимость, четыре семейства фиксов и как выбирать, механизм DataLoader, off-CPU детекцию и вторичные сбои на масштабе — не подглядывая в уроки.

Вспомните перед уходом
  1. 01
    Почему забор 100 строк одним запросом бьёт 100 запросов по одной строке, даже когда каждый запрос быстрый?
  2. 02
    Назови четыре семейства фиксов N+1 и форму данных, под которую подходит каждое.
  3. 03
    Объясни, как работает DataLoader и почему ORM eager loading не заменяет его для GraphQL.
  4. 04
    Почему CPU-профили пропускают N+1, и какие три инструмента его вскрывают?
  5. 05
    Как N+1 каскадирует в исчерпание пула соединений, и какие сигналы его выдают?
  6. 06
    Когда денормализация (counter cache, materialised view, CQRS read model) — правильный ответ для N+1, и когда она преждевременна?
Итог

Если ты смог восстановить каждый ответ по памяти, ты держишь хребет юнита: число trip’ов — а не скорость запроса — задаёт стоимость; четыре семейства фиксов ложатся на cardinality и происхождение lookup’ов; DataLoader батчит на уровне request, куда ORM preload не дотягивается; N+1 прячется off-CPU и находится в query log, APM-waterfall и per-request счётчиках, затем гейтится в CI; а на масштабе он каскадирует в исчерпание пула, переключения plan’а и DoS, причём денормализация резервируется на случай, когда измерение доказывает, что одного батчинга мало для SLO.

Продолжить восхождение ↑N+1: чтение кода и логов
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.