2.1Kпросмотров
11 января 2026 г.
📷 ФотоScore: 2.3K
План SQL запроса через EXPLAIN, но это Clickhouse Первый шаг для оптимизации запроса — это посмотреть его план исполнения. В классических СУБД типа Postgres 👩💻 мы чаще всего используем оператор EXPLAIN или EXPLAIN ANALYZE. EXPLAIN показывает примерную стоимость запроса без фактического исполнения, а EXPLAIN ANALYZE даёт более точную оценку, так как исполняет запрос. В плане мы можем увидеть: 🟡Какой физический вид JOIN используется (не путать с логическим)
🟡Сколько строк будет в предполагаемом выводе
🟡Используется ли индекс или читается вся таблица
🟡Сколько партиций будет прочитано, если таблица партицирована Это позволит нам определить bottle necks нашего запроса. Например, если мы уверены, что должен сработать индекс, но не видим его в плане, значит, в запросе ошибка.
Подсказка: если раньше никогда не смотрел план запроса, просто скопируй его и кинь в гпт, он сам тебе укажет на проблемы. Но в Clickhouse 😆 всё гораздо интереснее: 1️⃣ В клике ни один модификатор EXPLAIN что-то не исполняет запрос 2️⃣ После EXPLAIN можно дописать 7 разных модификаторов, которые будут выводить разную информацию, и почти к каждому есть ещё по 5 настроек, каждая из которых меняет формат плана либо его контент. Для оптимизации запросов я рекомендую два варианта: 1️⃣ EXPLAIN ESTIMATE (скриншот 1): показывает объём данных, который оптимизатор прочитает. Всего 3 метрики: 🟡parts — количество дата партов, то есть файлов на диске (не путать с партициями)
🟡rows — количество строк
🟡marks — количество меток, то есть гранул (обычно 8192 строки) Этот объём данных можно сравнить с общим объёмом данных таблицы через таблицу system.parts. 2️⃣ EXPLAIN PLAN indexes = 1 (скриншот 2) показывает: 🟡Пошаговый план выполнения запроса (FROM, JOIN, GROUP BY, SELECT)
🟡Настройка indexes добавляет инфу об используемых индексах и тех же самых parts и granules (ака marks). Таким образом в одном месте у вас будет информация о шагах запроса, индексах и о количестве обрабатываемых данных. Более подробно — здесь.
Потыкаться самому в песочнице — здесь. Оба скриншота — слайды моей презентации одного из занятий буткемпа, на котором мы ещё детальнее обсудим оптимизацию запросов SQL: 🟡Как сразу написать оптимальный запрос до того, как придёт бить по жопе Дата Инженер
🟡Где в Clickhouse посмотреть все исполненные запросы и их ресурсозатраты. Научу вас не путаться в системных таблицах
🟡Как структурированно ответить на вопрос на собесе "Как можно оптимизировать запрос", чтобы очаровать рекрутёра Делаю особый упор на особенностях Clickhouse, потому что её использует каждая вторая компания, а нюансов очень много. Поэтому если хотите: 🟡Узнать ещё больше про SQL
🟡Потренировать свои хардовые навыки на домашках с проверкой
🟡Попробовать свои силы в мок собесе
🟡Получить 4 эксклюзивных софтовых доклада про поиск работы, которые закроют 99% вопросов про рынок труда... ... то жду на своём буткемпе! Подробная программа и условия здесь, старт через неделю 18.01. Уже сегодня в 00:00 нынешняя цена превратится в тыкву, завтра будет дороже, времени на раздумья всё меньше. Запись и вопросы — @barikko.