Learning Platform
Глоссарий Troubleshooting
Урок 11.08 · 15 мин
Продвинутый
summaryTTLtiered storagelifecyclelightweight DELETElightweight UPDATEmutations

Итоги модуля: TTL и Tiered Storage

Модуль 10 охватил полный стек управления жизненным циклом данных в ClickHouse — от автоматического TTL-удаления до политик многоуровневого хранения и точечного изменения строк. Семь уроков провели нас от фундаментального merge-цикла до сравнительной матрицы операций изменения данных и практики GDPR-compliance.


Ключевые решения проектирования

  1. TTL и merge-цикл (TTL-01). TTL event_time + INTERVAL 90 DAY — атрибут таблицы, не отдельный процесс. Удаление и перемещение данных происходят только во время merge. MATERIALIZE TTL и OPTIMIZE TABLE t FINAL — инструменты для принудительного применения. Column-level TTL заменяет значение на type-default (не NULL) после истечения срока.

  2. MOVE TTL + storage policy (TTL-02). Storage policy в XML определяет volumes (hot/warm/cold), диски (local SSD, S3, cache). TTL event_time + INTERVAL 30 DAY TO VOLUME 'cold' автоматически перемещает части при merge. use_path_style_url=1 обязателен для MinIO в S3-compatible режиме.

  3. Zero-copy replication (TTL-03). allow_remote_fs_zero_copy_replication — экспериментальная функция, официально не рекомендуется для production. В кластерах с S3-хранилищем должна быть явно отключена (=false). Вместо zero-copy — стандартная репликация частей между узлами.

  4. Partition operations (TTL-04). ATTACH/DETACH/MOVE/REPLACE/FETCH PARTITION — атомарные операции над целыми партициями. DETACH делает данные недоступными без удаления с диска. MOVE PARTITION TO TABLE archive_t — эффективная архивация без копирования данных. REPLACE PARTITION FROM source_t — атомарный swap партиции для ETL-паттернов.

  5. Lightweight DELETE (TTL-05). DELETE FROM t WHERE expr (25.3+) создаёт bitmap-маску: O(parts) сложность, немедленная фильтрация в SELECT, физическая очистка при merge. ALTER TABLE t APPLY DELETED MASK для принудительного освобождения диска. Несовместим с projections — для таких таблиц используйте ALTER TABLE DELETE.

  6. Lightweight UPDATE — Patch Parts (TTL-06). UPDATE t SET col = val WHERE expr (25.7+/26.3 LTS) создаёт delta-части: до 1000-1600x быстрее ALTER TABLE UPDATE. Видимость немедленная. Эффективен до ~10% строк таблицы. Для > 10% строк или при наличии projections — ALTER TABLE UPDATE.

  7. Mutations vs lightweight ops (TTL-07). Иерархия скорости: DROP PARTITION (O(1)) >> DELETE FROM (O(parts)) >> UPDATE patch parts >> ALTER TABLE UPDATE/DELETE (O(rows × cols)). system.mutations отслеживает только тяжёлые мутации. KILL MUTATION + mutations_sync для управления асинхронными операциями.


Что дальше

Модуль 11: Паттерны загрузки данных — ingestion patterns для production-сред: async inserts с адаптивными таймаутами, Kafka table engine + Materialized View, S3Queue для потокового чтения из бакетов, MaterializedPostgreSQL/MySQL для CDC, форматы данных и протоколы подключения. Понимание data lifecycle (этот модуль) помогает проектировать ingestion pipelines с учётом TTL и partitioning стратегий.

TIP

Для практики выполните лабораторную работу по MinIO из репозитория курса (labs/minio/). Лаб поднимает ClickHouse 26.3 LTS + MinIO в Docker Compose, включает упражнения по настройке storage policy hot/cold, TTL MOVE к S3 и работе с s3() table function. Минимальные требования: 4-6 ГБ RAM.

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 8