我们可以使用“NullCompactionStrategy”吗?
Posted
技术标签:
【中文标题】我们可以使用“NullCompactionStrategy”吗?【英文标题】:Can we use 'NullCompactionStrategy'? 【发布时间】:2019-12-10 17:04:44 【问题描述】:我们知道,我们在 apache cassandra 和 ScyllaDB 及其用例中有不同类型的压缩策略。我们可以使用 'NullCompactionStrategy' 吗?如果是,对 Scylla/Cassandra 集群有什么影响?
【问题讨论】:
【参考方案1】:使用 NullCompactionStrategy 将有效地禁用表上的压缩。如果您正在做一些数据迁移,或者您要在短时间内写入大量数据但不建议长时间使用,这在短期内是可以的。
Cassandra 写入被刷新到不可变的 SSTables。所以每次内存刷新到磁盘都会创建一个新的 SSTable 文件。如果禁用压缩,服务器将继续创建越来越多的文件。因此,如果您更新列的值,它可能会出现在多个文件中。现在您的读取将不得不通过许多文件来处理请求。
压缩过程将 SSTable 合并在一起。如果有更新或删除,则该字段的最新值通过压缩保留并写入新的 SSTable,而旧版本将被丢弃。这意味着读取将发生在较少数量的文件上。
禁用压缩会减少写入期间的 CPU 使用率,但也意味着稍后读取速度会变慢。因此,要么保持启用压缩,要么在完成迁移后启用它。
【讨论】:
谢谢。是在 cassandra 中禁用压缩的唯一方法吗?我们可以在我们的产品服务器中遵循这个过程吗? 你应该使用 nodetool disableautocompaction 来禁用压缩。 docs.datastax.com/en/dse/5.1/dse-admin/datastax_enterprise/… 好的...但是在 scylla 中呢? scyllaDB 基本上是 Cassandra 的 C++ 实现,性能更好但功能更少。压缩在 scyllaDB 中的工作方式应该与在 Cassandra 中相同。 @LetsNoSQL Scylla 不支持nodetool disableautocompaction
命令,因此可以选择使用NullCompactionStrategy
。为什么要禁用压缩?强烈不推荐。以上是关于我们可以使用“NullCompactionStrategy”吗?的主要内容,如果未能解决你的问题,请参考以下文章
我们可以使用“NullCompactionStrategy”吗?