Выбор ответа Middle ClickHouse и колоночные СУБД обновлено
Для чего PARTITION BY
Вопрос
Для чего в первую очередь используют PARTITION BY toYYYYMM(event_date) в ClickHouse?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Для управления данными: удалить, перезалить или переместить месяц целиком, TTL. Партиция это группа частей с одним значением выражения.
Варианты ответа
- Чтобы задать первичный ключ: месяц становится первой колонкой индекса
- Чтобы гарантировать уникальность строк в пределах месяца при фоновых слияниях частей
- Для управления данными: удалить, перезалить или переместить месяц целиком, TTLправильный ответ
- Чтобы данные каждого месяца хранились на отдельном шарде кластера
Разбор
Партиция это группа частей с одним значением выражения. Операции DROP PARTITION, REPLACE PARTITION и TTL работают с ней целиком и дёшево. Запросы с фильтром по дате тоже пропускают лишние партиции, но основное ускорение даёт сортировочный ключ. Слишком мелкие партиции (по дню на маленькой таблице, по пользователю) вредны. Первичный ключ, уникальность и шардирование задаются другим.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.