在cassandra上禁用压缩和gc宽限

时间:2015-01-07 17:22:51

标签: cassandra cql cassandra-2.0 cqlsh

我总是插入数据PRIMARY KEY((site_name,date),time,id),而site_name和date可以是一个驯服字段的时间相同而id(uuid)是不同的。所以我总是添加新数据。使用TTL插入数据(目前为3天)。因此,如果我不删除或更新,我可以禁用压缩吗?考虑到TTL就在那里。会不会有任何影响。此外,由于没有删除记录,我可以禁用gc_grace时间吗?我想尽可能减少服务器上的负载。如果有人能提供帮助,我们非常感谢

3 个答案:

答案 0 :(得分:3)

TTL创建墓碑。因此,需要压实。如果您的数据是时间序列数据,您可以考虑新的日期分层压缩:http://www.datastax.com/dev/blog/datetieredcompactionstrategy

如果您使用TTL并将grace设置为0,除非您的群集是单个节点,否则您会遇到麻烦。恩典是收集墓碑之前等待的时间。如果它为0,则不会等待。这可能听起来不错,但实际上,这意味着“删除”可能不会在群集中传播,并且删除的数据可能会重新出现(因为其他节点可能拥有它,最后一个值将“赢”) 。这种类型的数据称为僵尸数据。僵尸很糟糕。不要喂僵尸。

您可以停用自动压缩功能:http://www.datastax.com/documentation/cassandra/2.1/cassandra/tools/toolsDisableAutoCompaction.html。但同样,我怀疑你会从中获益多少。再看一下日期分层压缩。

最后,我没有对这个问题进行投票。这是一个真实的问题,其他人可能也有类似的问题。

答案 1 :(得分:1)

您可以单独永久禁用表(列族)上的自动压缩,如此(cql)

alter table <tablename> with compaction = { 'class':'CompactionStrategy', 'enabled':'false'}

enabled:false会永久禁用该表上的自动压缩,但是只要您喜欢使用“nodetool compact&#39;”,就可以进行手动压缩。命令

答案 2 :(得分:-1)

您可以将gc grace设置为0,但不能关闭压缩。如果您从未删除或更新我认为您可以关闭压缩。

编辑: C *从2.0及以后的优化恰好适用于这种情况: https://issues.apache.org/jira/browse/CASSANDRA-4917

关于TTL,tombstones和GC Grace http://mail-archives.apache.org/mod_mbox/cassandra-user/201307.mbox/%3CCALY91SNy=cxvcGJh6Cp171GnyXv+EURe4uadso1Kgb4AyFo09g@mail.gmail.com%3E