Кластеризация таблиц
Продуманный ключ сортировки — это самый эффективный инструмент физического проектирования в Selena. Это руководство объясняет, как работает ключ сортировки под капотом, какие системные преимущества он открывает, и предоставляет конкретный план действий для выбора эффективного ключа для вашей рабочей нагрузки.
Пример
Предположим, вы управляете системой телеметрии, которая получает миллиарды строк в день, каждая из которых помечена device_id и ts (временная метка). Определение ORDER BY (device_id, ts) для вашей таблицы фактов обеспечивает:
- Точечные запросы по
device_idвозвращаются за миллисекунды. - Дашборды, фильтрующие недавние временные окна для каждого устройства, отсекают большую часть данных.
- Агрегации типа
GROUP BY device_idполучают преимущества от потоковой агрегации. - Сжатие улучшается благодаря последовательностям близких временных меток для каждого устройства.
Этот простой двухколоночный ключ сортировки ORDER BY (device_id, ts) обеспечивает сокращение I/O, экономию CPU и более стабильную производительность запросов для миллиардов строк.
CREATE TABLE telemetry (
device_id VARCHAR,
ts DATETIME,
value DOUBLE
)
ENGINE=OLAP
PRIMARY KEY(device_id, ts)
PARTITION BY RANGE (date_trunc('day', ts))
DISTRIBUTED BY HASH(device_id) BUCKETS 16
ORDER BY (device_id, ts);