首页/数据/NoSQL 速查/TTL 数据过期与冷热分层
ClickHouse56 条

TTL 数据过期与冷热分层

TTL 在 MergeTree 表上定义数据生命周期:到期可以删除、移动到冷磁盘或卷,也可以按列级 TTL 压缩;清理动作在后台合并时执行,不保证到点即删。

NoSQL 速查数据更新于 2026-10-12
语法TTL expr [DELETE | TO DISK '…' | TO VOLUME '…' | RECOMPRESS CODEC(...)] [WHERE …]
常用示例TTL event_time + INTERVAL 30 DAY DELETE、TTL event_time + INTERVAL 90 DAY TO VOLUME 'cold'
触发TTL 在后台合并时评估;ALTER TABLE … MATERIALIZE TTL 可强制重算

示例

示例
CREATE TABLE logs
(
    ts DateTime,
    msg String
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(ts)
ORDER BY ts
TTL ts + INTERVAL 30 DAY DELETE,
    ts + INTERVAL 90 DAY TO VOLUME 'cold';

ALTER TABLE logs MATERIALIZE TTL;
TTL 表达式结果必须是日期时间类型;存储分层(TO VOLUME/DISK)要提前在存储配置里定义卷与磁盘。

易错点

  • TTL 删除依赖合并节奏,短保留期数据可能超出预期时间仍留在磁盘上,监控要看 system.parts
  • 按分区整体管理生命周期(DROP PARTITION)比逐行 TTL 更省资源,两者可组合

数据来源与参考

  • ClickHouse Docs: TTL
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌