Выбор ответа Middle ClickHouse и колоночные СУБД обновлено

Для чего PARTITION BY

Вопрос

Для чего в первую очередь используют PARTITION BY toYYYYMM(event_date) в ClickHouse?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Для управления данными: удалить, перезалить или переместить месяц целиком, TTL. Партиция это группа частей с одним значением выражения.

Варианты ответа

  1. Чтобы задать первичный ключ: месяц становится первой колонкой индекса
  2. Чтобы гарантировать уникальность строк в пределах месяца при фоновых слияниях частей
  3. Для управления данными: удалить, перезалить или переместить месяц целиком, TTLправильный ответ
  4. Чтобы данные каждого месяца хранились на отдельном шарде кластера

Разбор

Партиция это группа частей с одним значением выражения. Операции DROP PARTITION, REPLACE PARTITION и TTL работают с ней целиком и дёшево. Запросы с фильтром по дате тоже пропускают лишние партиции, но основное ускорение даёт сортировочный ключ. Слишком мелкие партиции (по дню на маленькой таблице, по пользователю) вредны. Первичный ключ, уникальность и шардирование задаются другим.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.