cassandra压实策略可以动态改变吗?

时间:2014-10-29 20:46:54

标签: cassandra cqlsh

我对使用Cassandra很新,并且有一个基本的问题,我正在寻求答案。我正在使用Size-Tiered的默认压缩策略。我知道可以通过运行如下命令将其更改为Leveled Compaction策略:

ALTER TABLE users WITH
compaction = { 'class' :  'LeveledCompactionStrategy'  }

但我不确定此更改是否在运行时在特定键空间上生效,或者是否需要重新启动节点以使更改生效。我在Datastax文档(http://www.datastax.com/documentation/cassandra/1.2/cassandra/configuration/configCassandra_yaml_r.html)中读到,cassandra.yaml文件中对全局配置的更改仅在重新启动节点后生效,并且想知道是否同样适用于压缩策略等特定于键空间的属性好。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

configuring compaction上的新文档表明启用Leveled Compaction的正确程序是您上面的ALTER TABLE语句。虽然您是正确的,但对cassandra.yaml文件的更改将要求重新启动节点才能生效,但表配置更改通常不会。它应该在下次触发压缩时对该表使用Leveled Compaction。

此外,你应该阅读Tyler Hobbs'标题为When to Use Leveled Compaction的文章。由于您是Cassandra的新手,请确保您拥有合适的用例。

答案 1 :(得分:0)

您可以在线修改压缩策略。 Cassandra将重新压缩所有sstables,所以唯一关心的是磁盘I / O. 2.1之前,只有在创建新的sstable之后才会替换旧的sstable。 在2.1 之后,新的sstable可以在创建期间提供流量(主要是为了保留页面缓存,请参阅CASSANDRA-6916)。基本上,您的流量不会受到影响。

我知道有些公司,例如netflix通过主机通过jmx host执行此更改,以防止集群范围内的雷鸣风暴。但我认为群集ALTER TABLE没有任何问题。