cassandra - 在 cassandra 上禁用压缩和 gc 宽限期

标签 cassandra cql cassandra-2.0 cqlsh

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

最佳答案

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

如果您使用 TTL 并将宽限期设置为 0,那么除非您的集群是单节点集群,否则您就是在自找麻烦。恩典是在收集墓碑之前等待的时间。如果它是 0,它不会等待。这听起来不错,但实际上,这意味着“删除”可能不会在整个集群中传播,并且被删除的数据可能会重新出现(因为其他节点可能有它,最后的当前值将“获胜”) .这种类型的数据称为僵尸数据。僵尸是坏的。不要喂僵尸。

您可以禁用自动压缩:http://www.datastax.com/documentation/cassandra/2.1/cassandra/tools/toolsDisableAutoCompaction.html .但同样,我怀疑你会从中受益。再次,看看日期分层压缩。

最后,我没有得到这个问题的反对票。这是一个真正的问题,其他人可能也有类似的问题。

关于cassandra - 在 cassandra 上禁用压缩和 gc 宽限期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27825000/

相关文章:

java - 如何解决Apache Cassandra的OutOfMemory问题

cassandra - Cassandra 支持哪些类型的墓碑?

amazon-ec2 - 将 scylla 集群切换到大型 aws 实例的简单方法

cassandra - 如何控制 Cassandra 中的高读取延迟?

java - 使用 CQL jdbc 驱动程序时连接字符串应该是什么

cassandra - 如何在 WHERE 子句中使用带有 IN 运算符的值列表?

java - 我应该为 "com.datastax.driver.core.exceptions.ReadTimeoutException"做什么?

cassandra - Cassandra 中的一对多映射

java - 在cassandra中存储小文件

cassandra - SELECT DISTINCT cql 忽略 WHERE 子句