【发布时间】:2019-12-10 17:04:44
【问题描述】:
我们知道,我们在 apache cassandra 和 ScyllaDB 及其用例中有不同类型的压缩策略。我们可以使用 'NullCompactionStrategy' 吗?如果是,对 Scylla/Cassandra 集群有什么影响?
【问题讨论】:
标签: cassandra nosql datastax scylla
我们知道,我们在 apache cassandra 和 ScyllaDB 及其用例中有不同类型的压缩策略。我们可以使用 'NullCompactionStrategy' 吗?如果是,对 Scylla/Cassandra 集群有什么影响?
【问题讨论】:
标签: cassandra nosql datastax scylla
使用 NullCompactionStrategy 将有效地禁用表上的压缩。如果您正在做一些数据迁移,或者您要在短时间内写入大量数据但不建议长时间使用,这在短期内是可以的。
Cassandra 写入被刷新到不可变的 SSTables。所以每次内存刷新到磁盘都会创建一个新的 SSTable 文件。如果禁用压缩,服务器将继续创建越来越多的文件。因此,如果您更新列的值,它可能会出现在多个文件中。现在您的读取将不得不通过许多文件来处理请求。
压缩过程将 SSTable 合并在一起。如果有更新或删除,则该字段的最新值通过压缩保留并写入新的 SSTable,而旧版本将被丢弃。这意味着读取将发生在较少数量的文件上。
禁用压缩会减少写入期间的 CPU 使用率,但也意味着稍后读取速度会变慢。因此,要么保持启用压缩,要么在完成迁移后启用它。
【讨论】:
nodetool disableautocompaction 命令,因此可以选择使用NullCompactionStrategy。为什么要禁用压缩?强烈不推荐。