天天看点

如何选择压实策略

官方技术文档翻译,英文原文链接: https://docs.datastax.com/en/dse/6.7/dse-dev/datastax_enterprise/config/configChooseCompactStrategy.html?spm=a2c6h.12873639.0.0.e52f23ab7LVCX

6"

要选择合适的压实策略:

  1. 需要了解压实和压实策略是如何工作的,请阅读“如何维护数据?“
  2. 审视您的应用程序的需求,使用此信息来回答下面的问题。
  3. 配置表使用最合适的策略。
  4. 根据你的数据测试压实策略。

一、 哪种压实策略是最好的?

以下问题是基于使用这些压实策略的开发者和用户的经验提出的

Ø 您的表是否处理时间序列数据?

如果是,您最好的选择是TWCS.如果不是,下面的问题会引入其他考虑,以指导您的选择。

Ø 您的表是读多写少,还是写多读少?

LCS是一个很好的选择,如果你的表数据读取是写入的两倍甚至更多,特别是随机读。如果读写的比例接近,LCS的性能消耗可能并不值得使用。请注意,LCS很快会被大量的写入压垮。

Ø 您表中的数据是否经常发生变化?

LCS的一个优点是,它将相关联的数据保存在一小组SSTable中。如果您的数据是静态不变或不频繁更改,STCS压缩可以完成同样的SSTable分组,而不需要LCS一样的性能开销。

Ø 您是否需要可预测的读写活动级别?

LCS压实策略保持SSTable文件在可预测的大小和数量。例如,如果您的表的读/写比率很小(写多读少),但是期望读操作符合SLA,则为了在可预测的水平上保持读速率和读延迟,可能值得使用LCS,牺牲表的写性能,您可以通过水平扩展(添加更多的节点)来克服这种写性能问题。

Ø 您的表是否用于批处理进程?

在批量读和批量写过程中,STCS的性能优于LCS.批处理过程很少或没有碎片,因此不能发挥LCS的长处;批处理进程可能压跨使用LCS压实策略的表。

Ø 您的系统磁盘空间是否非常有限?

LCS处理磁盘空间比STCS更有效率:基于正在压实的数据文件的占用空间,它仅需要大约10%的额外空间。在某些情况下,STCS和DTCS通常需要50%的额外空间。(DateTieredStorageStrategy (DTCS)废弃)

Ø 你的系统达到I/O极限了吗?

LCS比DTCS或STCS的I/O强度要大得多,使用LCS可能会引入额外的I/O负载,从而抵消了LCS带来的优势。

二、 配置和运行压实

使用CREATE TABLE或者ALTER TABLE设置表的压实策略,具体请参见表_配置项

您可以手动使用nodetool compact命令启动压实操作。

三、 测试压实策略

关于哪个压实策略最适合您的系统的建议:

  1. 创建一个三节点的集群,使用一个压实策略,用cassandra-streess工具对集群进行压测,并分析结果。
  2. 在现有集群上建立一个节点,并使用写调查模式来对实时数据采样。

继续阅读