---

title: ClickHouse TTL与分层存储策略实践

keywords:

  • ClickHouse
  • TTL
  • 分层存储
  • StoragePolicy
  • MOVE PART

description: 使用TTL与存储策略实现冷热分层与数据自动清理,提供可验证的DDL与系统表验证,优化成本与性能。

date: 2025-11-26

tags:

  • ClickHouse
  • MOVE PART
  • StoragePolicy
  • TTL
  • 分层存储
  • 存储
  • 数据

categories:

  • 文章资讯
  • 编程技术

---

概述

  • 目标:通过TTL将过期数据自动删除或移动到低成本存储,并使用StoragePolicy实现冷热分层,降低成本同时保障查询效率。
  • 适用:时序/日志数据、长期保留与分层访问场景。

核心与实战

  • 存储策略定义:
<storage_configuration>
  <disks>
    <fast>
      <path>/data/fast/</path>
    </fast>
    <cold>
      <path>/data/cold/</path>
    </cold>
  </disks>
  <policies>
    <hot_cold>
      <volumes>
        <hot>
          <disk>fast</disk>
        </hot>
        <cold>
          <disk>cold</disk>
        </cold>
      </volumes>
    </hot_cold>
  </policies>
</storage_configuration>
  • 表与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.diskssystem.parts空间占用;确保移动后热盘压力下降。
  • 查询性能:
  • 热数据保留在fast盘;冷数据查询可接受较高延迟。
  • TTL执行:
  • 确认TTL任务周期执行;避免过期数据堆积。

常见误区

  • 未配置storage_policy导致TO DISK无效;需指定策略。
  • TTL仅在合并过程中执行;合并不足时清理延迟,需要调整合并设置或手动触发。
  • 将全部数据移至冷盘导致热点查询慢;需按访问模式分层。

结语

  • 通过TTL与存储策略可实现ClickHouse数据的自动分层与清理,在控制成本的同时维持热点查询性能。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部