ORDER BY определяет физический порядок
MergeTree хранит sparse primary index поверх отсортированных granules. Сначала ставьте часто фильтруемые и хорошо отсекающие колонки; уникальную identity обычно оставляют в хвосте ключа.
DATA SYSTEMS / CLICKHOUSE FIELD LAB
Пишите ClickHouse SQL, запускайте его на детерминированном workload fixture и объясняйте стоимость layout, ingest и latest-state query.
CASE / TYPES / PARTITION / ORDER BY
Основной запрос фильтрует tenant, event name и узкий time range. Retention удаляется помесячно, а повторная доставка одного event должна схлопываться по version. Исправьте DDL и физическую раскладку.
01 / PHYSICAL CONTRACT
Свести модельное чтение с 2 048 до 2 granules, не превращая tenant_id в высококардинальный partition key.
MergeTree хранит sparse primary index поверх отсортированных granules. Сначала ставьте часто фильтруемые и хорошо отсекающие колонки; уникальную identity обычно оставляют в хвосте ключа.
ClickHouse не merge-ит parts между partitions. Месяц подходит для retention fixture, а tenant_id создаёт много разрозненных parts и ухудшает merge pressure.
CREATE TABLE · column types · ReplacingMergeTree(version) · PARTITION BY · ORDER BY
02 / SQL
Запустите SQL. Model не является ClickHouse server и не обещает реальные latency или optimizer plans; она воспроизводимо проверяет ограниченные layout и delivery invariants.