面试题答案
一键面试调整垃圾回收策略
- 增加墓碑的存活时间
- 优点:减少短时间内频繁删除数据导致的墓碑清理压力,对于数据删除操作频繁且数据读取不受墓碑过多影响的场景(如某些日志类数据存储,只关心最新数据,旧数据删除后即便墓碑暂存也不影响读取逻辑),可一定程度提升系统整体性能,因为减少了垃圾回收频率。
- 缺点:会导致墓碑长时间占用空间,对于存储资源紧张的场景可能不适用,随着时间推移可能会严重影响磁盘空间使用效率。
- 降低墓碑的存活时间
- 优点:快速释放被删除数据占用的空间,适合存储资源紧张且数据删除后对后续读取基本无影响的场景,比如一些临时数据的存储。能及时回收磁盘空间,提高空间利用率。
- 缺点:增加了垃圾回收的频率,可能导致系统在垃圾回收上消耗过多资源,影响正常读写操作的性能,尤其是在删除操作频繁的情况下。
- 调整垃圾回收的执行频率
- 优点:根据系统负载情况灵活调整垃圾回收频率。在系统负载较低时增加垃圾回收频率,可有效清理墓碑,释放空间;在负载高时降低频率,避免垃圾回收对正常业务的影响。适用于业务负载有明显峰谷特征的场景,例如一些电商系统,平时负载低可多进行墓碑清理,促销活动时负载高则减少清理。
- 缺点:需要对系统负载有准确的监控和预测,若设置不当,可能在负载高时仍频繁进行垃圾回收影响业务,或在负载低时未及时清理墓碑浪费空间。
优化数据模型减少不必要墓碑产生
- 使用逻辑删除替代物理删除
- 优点:避免产生大量墓碑,通过在数据中添加逻辑删除标识字段来标记数据是否已删除。在读取时,根据标识判断数据是否有效。适用于需要保留数据历史记录,但又希望在逻辑上实现删除效果的场景,如订单系统,订单取消可逻辑删除,方便后续统计等操作。同时不产生墓碑,不影响空间使用和垃圾回收压力。
- 缺点:增加了数据读取逻辑的复杂度,每次读取都要判断逻辑删除标识。而且如果数据量巨大,逻辑删除数据长期存在可能影响查询性能,需要额外的维护策略(如定期清理真正无用的逻辑删除数据)。
- 批量删除优化
- 优点:如果数据具有一定的关联性,可以将相关数据进行批量删除操作。Cassandra在处理批量操作时相对更高效,能减少单个墓碑的产生数量。比如在用户注销场景,与该用户相关的多种数据可批量删除,减少墓碑数量。适用于具有明显数据关联关系且删除操作以组为单位的场景。
- 缺点:要求对数据模型有清晰的理解和设计,确保批量删除的原子性和一致性。若处理不当,可能导致部分数据删除成功,部分失败,引发数据不一致问题。