TGViewer
Кухня данных | Руслан Мустафин Кухня данных | Руслан Мустафин @etl_kitchen · 894 subscribers
Post #42 1.26K
Читай план запроса! Бу, испугался? 😨

Если работаешь с данными, наверняка слышал эти страшные слова про план запроса и что вообще надо бы уметь его читать ‼️
А может тебя уже спрашивали про физические джойны на собесах и вообще просили прикинуть сложность алгоритма?? 😨
До физических джойнов и сложности алгоритмов мы еще доберемся, а сегодня про план запроса и что же это вообще такое?

🔍План запроса — это то как СУБД выполняет твой SQL запрос.

Рассмотрим на примере Greenplum/PostgreSQL.

1️⃣ Чтобы посмотреть план запроса нужно в начале запроса добавить
EXPLAIN - показывает оценочный план: cost/rows/width. Cost — это не миллисекунды, а абстрактные единицы.
EXPLAIN ANALYZE - выполняет запрос и показывает фактическое время, полученные строки.
EXPLAIN (ANALYZE, VERBOSE, BUFFERS, FORMAT JSON) <твой SELECT>

😮Говоря простым языком, EXPLAIN это когда ты открыл рецепт и думаешь что сделаешь все по нему, а EXPLAIN ANALYZE это когда уже начал готовить и понял что и конфорка только одна, и продукты вообще то дома закончились, да и вообще у тебя сковородки нет.

2️⃣ Глобально можно выделить следующие операции в плане запроса (они даже кажутся логичными⁉️):
➡️ Scan — как читаем (Seq/Index/Bitmap); тут часто срабатывают фильтры.
➡️ Join — как соединяем данные (Hash/Merge/Nested Loop).
➡️Sort/Agg — сортировки, группировки, окна.
➡️ Motion (только в MPP/GP) — перемещения: Gather / Redistribute / Broadcast.
➡️ спиллы на диск (workfiles) — сброс на диск при нехватке памяти под sort/hash.

3️⃣Как читать?
➡️Смотри на узлы с самым большим actual time.
➡️ Сравни оценочные rows vs фактические — где расхождение, там и проблема со статистикой/кардинальностью.
➡️Отлови Motion-узлы (узкие горлышки в GP).
➡️Проверь, нет ли Nested Loop на больших объёмах.
➡️Загляни в Sort/Hash — были ли спиллы?

✍️ Что рекомендую
🟢 изучить цикл статей про Postgresql от Тензора, все презентации доступны на гитхабе.
🟢Обязательно посмотри планы запроса на сайте от Тензора, они не просто объяснят что делать, но еще и отправят в документацию и покажут видео — https://explain.tensor.ru/archive/
🟢Конечно активно использовать ИИ, для того чтобы он объяснил что происходит в твоем плане (будь аккуратен и перепроверяй его рекомендации по оптимизации, он порой чудит).

🤪В отдельном посте сделаю подробный разбор реального плана GP/PG: пройдёмся по узлам, покажу, где теряется время и как это чинить.

🙈Нужен ваш фидбэк!
Напишите в комментах:
— Что больше всего пугает в планах?
— Где чаще всего “спотыкаетесь”: оценка строк, Motion, сортировки, join’ы?
— Что из этого разобрать в первую очередь?

@etl_kitchen
  • 🔥 32
  • ❤ 3
More from @etl_kitchen
  1. Apr 29, 2026Если не сталкивались с понятием watermark Watermark (водяной знак) в инженерии данных — эт…
  2. Apr 29, 2026Задачка 🤪 Есть таблица-источник, которую мы грузим инкрементально. В таблице есть два важ…
  3. Apr 16, 2026Когда лид сказал, что в легаси подробная документация к коду. Тем временем документация 🤪…
  4. Apr 14, 2026Ларчик-то просто открывался Когда-то рассказывал, что у меня есть мой домашний сервер для…
  5. Apr 8, 2026У вас есть только 10 рублей, соберите себе идеальный конвейер данных 🤪 🟢Источник не меня…
  6. Apr 6, 2026Закрывал глаза в пятницу, открыл, а уже понедельник(( Заходи учиться, все бесплатно ➡️ htt…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →