我们是否需要使用Leveled压实策略和SIzeTiered压缩策略进行手动压缩

kri*_*433 0 cql cassandra datastax-enterprise cqlsh datastax

我们有几个表格采用Leveled压缩策略和SizeTiered压缩策略.我们多久需要进行一次压实?提前致谢

pha*_*act 5

TL; DR

压缩运行自己(只要你没有在yaml中禁用自动压缩).

压实 - 它是什么?

根据cassandra写入路径,我们定期将memtables刷新到磁盘上的SSTables(排序字符串表)是不可变的.当您更新现有单元格时,它最终会以sstable编写.可能与原始记录不同.当我们阅读时,有时C*必须扫描各种sstables(通过一些优化,请参见bloom过滤器)来查找单元格的最新版本.在卡桑德拉,最后写作获胜.

压缩采用sstables并将它们压缩在一起以删除重复数据,以优化读取.这是一个自动操作,但您可以调整压缩以便或多或少地运行.

关于压缩的一些有用的细节

大小分层压缩是cassandra中的默认压缩策略,它查找大小相同的sstables,并在找到足够的时候将它们压缩在一起(默认为4).尺寸分层比平整的IO密集度更低,并且当您有更小的盒子和旋转驱动器时,通常可以更好地工作.

整平压实优化的读取,当您已经阅读繁重的工作或紧阅读SLA的,有很多平整可能是有意义的更新.由于您需要花费更多周期来优化读取,因此级别压缩会增加IO和CPU密集度,但读取本身应该更快并且命中更少的SStables.nodetool compaction stats当您第一次启用这些或者您的工作负载增长时,请留意io等待以及待处理的压缩.

压缩可调参数/杠杆

多线程压缩 - 关闭它,开销大于收益.到了在C*2.1中被删除的程度.

并发压缩器 - 现在默认为2,用于默认为核心数,这是一个错误的默认值.如果您在2.0分支上并且没有运行最新的DSE,请检查此默认值并考虑将其减少到2.这是您可以运行的同时压缩任务的数量(不同的列族).

压缩限制 - 一种限制压缩占用的资源量的方法.您可以与即时调整这个nodetool getcompactionthresholdnodetool setcompactionthreshold.您希望将此调整到不累积待处理任务的点.0 - >无限制.无限制地,通常不是最快的设置,因为系统可能陷入困境.