数据岗位面试题更新 2026-08-05

请描述在 Cassandra 数据库中,对数据设置 TTL(Time To Live)后的管理方式与数据生命周期处理机制。

数据系统设计技术原理Apache Cassandra

考察说明

考查对 Cassandra TTL 原理、数据删除机制及运维管理的理解。

回答思路

  1. 【回答框架 1】TTL 是 Cassandra 中列级别或整行的存活时间设置,到期后数据不再返回查询结果,但物理删除由压缩(compaction)过程完成,期间数据仍占用磁盘空间。
  2. 【回答框架 2】TTL 到期后,Cassandra 会将该数据标记为 tombstone(墓碑),tombstone 会参与读修复与压缩,过度积累可能导致读性能下降及磁盘空间浪费,需合理设置 gc_grace_seconds。
  3. 【回答框架 3】管理 TTL 数据需关注:写入时通过 INSERT 或 UPDATE 语句设置 TTL,也可使用表默认 TTL;通过 ALTER TABLE 可修改默认 TTL,但不会影响已有数据。
  4. 【回答框架 4】查询 TTL:可使用 TTL() 函数获取列剩余存活时间;通过 nodetool 或系统表监控 tombstones 情况,必要时手动触发 major compaction 清除过期数据。
  5. 【回答框架 5】设计时需考虑 TTL 与业务幂等性:TTL 仅保证数据自动过期,不保证业务操作的幂等,需搭配唯一标识或状态记录实现幂等控制。
  6. 【关键点 1】TTL 到期后数据变为 tombstone,实际删除由压缩完成。
  7. 【关键点 2】gc_grace_seconds 控制 tombstone 保留时间,默认 10 天,需与集群节点同步协调。
  8. 【关键点 3】使用 TTL() 函数可读取剩余时间,监控 tombstone 数量防止性能下降。
  9. 【关键点 4】表默认 TTL 可设置,但修改默认值不影响已存在数据。
  10. 【关键点 5】TTL 管理要考虑磁盘空间和 compaction 策略,如 SizeTieredCompactionStrategy 或 LeveledCompactionStrategy。
  11. 【易错点 1】大量 TTL 同时过期可能导致 compaction 压力增大及读性能暂时下降。
  12. 【易错点 2】gc_grace_seconds 设置过短可能导致数据被提前物理删除,而副本未同步,引发数据不一致。
  13. 【易错点 3】TTL 并非业务幂等机制,仅依赖 TTL 可能造成重复数据处理问题。