его существование. в общем не мёржатся и я решил поменять схему таблицы пока не сильно поздно. сейчас такая схема:
create table entites
(
t DateTime64(6) DEFAULT now64(6),
entity String,
profile_id UInt64,
...
) Engine = ReplacingMergeTree(t)
ORDER BY (entity, profile_id, uuid);
хочу добавить
PARTITION BY (entity, round(profile_id/1000000))
обычно советуют что-то типа profile_id%10 , но есть ощущение, что через какое-то время опять упрусь в размер парта, а при моём подходе новые партиции будут создаваться на каждый миллион пользователей (сейчас их 10). и в принципе то на то и выходит, только в моей схеме заложен рост.
в общем какие подводные камни могут быть?
а entity много уникальных у вас?
Слишком мелкое партиционирование приведет к полной жопе намного быстрее
ну вот, стараюсь, чтобы было не слишком мелкое, но и чтобы в 150гб на партицию уложиться. да и по идее последние пользователи более активны чем предыдущие, значит большинство вставок будет в последнюю партицию. а при остатке от деления практически гарантировано, что будет писать во все 10.
Обсуждают сегодня