首页/数据/NoSQL 速查/数据生命周期与 TTL 清理对照
本包目录(322 条)
MongoDB99 条Elasticsearch89 条ClickHouse56 条时序与列式28 条
选型与架构50 条

数据生命周期与 TTL 清理对照

过期数据主动清理能控制成本:MongoDB 用 TTL 索引后台周期删除,ES 用 ILM 分阶段下沉与删除,ClickHouse TTL 在合并时执行并支持冷热分层,Redis 键过期是惰性加定期清理。清理策略要与备份与合规要求对齐。

NoSQL 速查数据更新于 2026-10-12

各库配置示例

各库配置示例
# MongoDB:创建 TTL 索引(后台线程约每 60 秒扫描一次)
db.sessions.createIndex({ createdAt: 1 }, { expireAfterSeconds: 3600 })

# Redis:设置键过期
redis-cli EXPIRE session:1 1800

# InfluxDB:按保留策略/桶自动清理(bucket 的 retention)
influx bucket update -n metrics -r 30d

ClickHouse 与 ES 的清理

ClickHouse 与 ES 的清理
-- ClickHouse:到期删除 + 数据下沉冷卷(合并时执行)
ALTER TABLE logs.events
  MODIFY TTL ts + INTERVAL 30 DAY DELETE, ts + INTERVAL 7 DAY TO VOLUME "cold";

-- Elasticsearch ILM 的删除阶段(摘要)
PUT _ilm/policy/logs_30d
{
  "policy": { "phases": { "delete": { "min_age": "30d", "actions": { "delete": {} } } } }
}
清理计时是近似值:MongoDB TTL 线程周期扫描、ClickHouse 依赖合并、ES ILM 由周期任务评估,不适合当精确的定时删除器。

易错点

  • 大批数据在同一时间点集中到期会造成删除与合并压力,策略里给时间加抖动
  • 清理策略要检查备份保留是否同样覆盖:主库删了但备份里仍留有合规数据时,两边周期要对齐

数据来源与参考

  • MongoDB Manual: TTL indexes
  • Elasticsearch Guide: ILM
  • ClickHouse Docs: TTL
  • Redis Docs: EXPIRE
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌