概述 - 目标:通过TTL将过期数据自动删除或移动到低成本存储,并使用StoragePolicy实现冷热分层,降低成本同时保障查询效率。 - 适用:时序/日志数据、长期保留与分层访问场景。 核心与实战 - 存储策略定义: ``` /data/fast/ /data/cold/ fast cold ``` - 表与TTL: ``` CREATE TABLE logs ( ts DateTime, level String, message String ) ENGINE = MergeTree ORDER BY (ts) TTL ts + INTERVAL 30 DAY DELETE, ts + INTERVAL 7 DAY TO DISK 'cold' SETTINGS storage_policy='hot_cold'; ``` - 手动迁移分区: ``` ALTER TABLE logs MOVE PARTITION '2025-11-26' TO DISK 'cold'; ``` 示例 - 验证TTL与分层: ``` SELECT partition, name, disk_name FROM system.parts WHERE table='logs' ORDER BY partition; ``` - 清理观察: ``` SELECT * FROM system.part_log ORDER BY event_time DESC LIMIT 20; ``` 验证与监控 - 资源与空间: - 观察`system.disks`与`system.parts`空间占用;确保移动后热盘压力下降。 - 查询性能: - 热数据保留在fast盘;冷数据查询可接受较高延迟。 - TTL执行: - 确认`TTL`任务周期执行;避免过期数据堆积。 常见误区 - 未配置storage_policy导致`TO DISK`无效;需指定策略。 - TTL仅在合并过程中执行;合并不足时清理延迟,需要调整合并设置或手动触发。 - 将全部数据移至冷盘导致热点查询慢;需按访问模式分层。 结语 - 通过TTL与存储策略可实现ClickHouse数据的自动分层与清理,在控制成本的同时维持热点查询性能。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部