Выбор ответа Senior ClickHouse и колоночные СУБД спрашивают часто обновлено

Как работает материализованное представление

Вопрос

Создали материализованное представление над таблицей событий, существующей полгода. Почему в целевой таблице только данные после создания представления?

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

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

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

Коротко

Правильный ответ: MV в ClickHouse работает как триггер на вставку и обрабатывает только новые блоки; историю льют отдельно. При каждой вставке в исходную таблицу блок прогоняется через запрос представления и записывается в целевую таблицу.

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

  1. Представление пересчитывается по расписанию раз в сутки, поэтому история появится после ночного пересчёта
  2. MV в ClickHouse работает как триггер на вставку и обрабатывает только новые блоки; историю льют отдельноправильный ответ
  3. Целевая таблица MV по умолчанию хранит данные только за последние 24 часа, старое удаляется TTL
  4. Нужно выполнить REFRESH MATERIALIZED VIEW, как в PostgreSQL, и представление досчитает историю

Разбор

При каждой вставке в исходную таблицу блок прогоняется через запрос представления и записывается в целевую таблицу. Старые данные никто не прогонял, их заливают INSERT INTO target SELECT ... FROM source за прошлые периоды (с осторожностью к пересечению с новыми вставками). Ежедневного пересчёта у классических MV нет (есть отдельный тип refreshable MV, но это другое). Срок хранения целевой таблицы задаёт её TTL. Команда из PostgreSQL здесь не применима.

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

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