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

API

Pagination: тест на припоминание

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

Припоминание сильнее перечитывания. На каждую подсказку проговорите или запишите полный ответ по памяти, прежде чем открыть модельный — именно усилие припоминания закрепляет механизм.

Цель

Восстановите ключевые механизмы юнита — почему offset растёт с глубиной, почему он дрейфует, что делает keyset-ключ валидным, почему cursor непрозрачен и почему точный подсчёт дорог — не подглядывая в урок.

Вспомните перед уходом
  1. 01
    Почему LIMIT 20 OFFSET 200000 становится медленнее на глубине, хотя всегда возвращает 20 строк?
  2. 02
    Объясните result drift: почему offset-лента показывает дубликаты и пропуски и почему даже на маленькой таблице?
  3. 03
    Какими двумя свойствами должен обладать keyset-ключ сортировки и что ломается, если ключ не уникален?
  4. 04
    Зачем отдавать opaque cursor вместо сырых ключей (created_at, id) и что клиент с ним делает?
  5. 05
    Что keyset отдаёт по сравнению с offset и когда offset всё ещё верный выбор?
  6. 06
    Почему точный итог дорог в Postgres и каковы альтернативы в порядке предпочтения?
Итог

Если вы восстановили каждый ответ по памяти, у вас есть стержень юнита: стоимость offset растёт с глубиной, потому что движок читает и отбрасывает все предыдущие строки; offset дрейфует, потому что позиция не стабильный адрес при записи; валидный keyset-ключ уникален, стабилен и подкреплён индексом, сравнивается как целый кортеж; cursor непрозрачен, чтобы контракт мог эволюционировать, а клиенты не собирали дорогие seek; keyset обменивает произвольные переходы по страницам на плоскую задержку, поэтому offset всё ещё подходит ограниченным админским поверхностям; а точный подсчёт это полный скан под MVCC, поэтому оценивайте или зондируйте через n+1.

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

Trademarks belong to their respective owners. Editorial reference only.