на диске по умолчанию 3 последние партиции (PARTITION BY date), старше 3х дней скидывать на volume s3 и старше одного месяца удалять.
диск s3 добавил по статье https://altinity.com/blog/clickhouse-and-s3-compatible-object-storage
policy сделал также как в статье tiered с 2 vol default и s3
ENGINE = MergeTree()
ORDER BY (toStartOfHour(timestamp), service, level, subdomain, requestID, timestamp)
PRIMARY KEY (toStartOfHour(timestamp), service, level, subdomain, requestID)
PARTITION BY date
TTL date + INTERVAL 1 MONTH DELETE,
date + INTERVAL 3 DAY TO VOLUME 's3'
SETTINGS storage_policy = 'tiered',
index_granularity = 8192;
TTL все правильно, у вас два поля date и timestamp , это как бы ОК, но вам придется писать оба условия в where чтобы работал partition pruning , КХ не знает что date и timestamp связаны (в смысле непонятно зачем вам поле date (я знаю почему я бы так сделал, но долго это объяснять)
на самом деле добавил поле date когда в графану добавил плагин ваш, там в запросах поле timestamp было и date )
хм, не знаю ничего про плагин, если ему надо два поля, то можно сделать PARTITION BY (date, toStartOfDate(timestamp))
про условия WHERE не совсем понял. В TTL добавить надо условия для удаления/перемещения?
это не имеет отношения к TTL у вас PARTITION BY date PRIMARY KEY (toStartOfHour(timestamp), если вы напишете в запросе timestamp >= '2022-08-30 00:00:00' то кх будет обрабатывать все 30 партиций и просканирует индексы везде, включая s3 если вы напишете в запросе date >='2022-08-30' and timestamp >= '2022-08-30 00:00:00' то кх будет обрабатывать одну 1 партицию и запрос будет использовать меньше cpu
дошло теперь, спасибо
а для партиции RECOMPRESS есть смысл делать? например, так date + INTERVAL 1 DAY RECOMPRESS
из яндекса говорили что есть, у них сжато LZ4, они пережимали в ZSTD а у меня например данные сжаты по дефолту ZSTD(1), я пробовал RECOMPRESS ZSTD(3), ничего не сжалось вообще, жать в другие ZSTD уровни 6 или 9, это только электричество жечь.
Обсуждают сегодня