我对使用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文件中对全局配置的更改仅在重新启动节点后生效,并且想知道是否同样适用于压缩策略等特定于键空间的属性好。
提前感谢您的帮助。
答案 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
没有任何问题。