Cassandra 每秒压缩量的确切含义是什么?

Cassandra 每秒压缩量的确切含义是什么?,cassandra,datastax,throughput,Cassandra,Datastax,Throughput,根据DataStax Cassandra yaml文档链接 每秒压缩吞吐量 (默认值:16)在整个系统中将压缩限制为指定的总吞吐量。插入数据越快,压缩数据以保持SSTable倒计时的速度就越快。建议的值是写入吞吐量速率的16到32倍(以MB/秒为单位)。将该值设置为0将禁用压缩限制 以上文字的文字解释是,如果你观察磁盘I/O(Mb/s)为38 Mb/s,现在只考虑CasDANRA节点上的写入负载,则将CuxOngOnTyPutsBMB PielSSEC设置为38×16=608或38×32=121

根据DataStax Cassandra yaml文档链接


每秒压缩吞吐量
(默认值:16)在整个系统中将压缩限制为指定的总吞吐量。插入数据越快,压缩数据以保持SSTable倒计时的速度就越快。建议的值是写入吞吐量速率的16到32倍(以MB/秒为单位)。将该值设置为0将禁用压缩限制

以上文字的文字解释是,如果你观察磁盘I/O(Mb/s)为38 Mb/s,现在只考虑CasDANRA节点上的写入负载,则将CuxOngOnTyPutsBMB PielSSEC设置为38×16=608或38×32=1216,这与压缩策略无关。 如果上述解释是正确的,那么请帮助我理解值608或1216在节流压缩和整个系统的总吞吐量的上下文中的实际含义,以尺寸分层压缩策略(默认)为例,可以扩展下面提到的策略


绘图:

根据文件,SizeTieredCompactionStrategy的最小阈值为6。在我们的情况下,它是不变的。平均而言,每个节点的磁盘I/O大约为38 mb/s(仅写操作,不执行读操作)。压缩吞吐量每秒值为16。


值为16的压缩工作流程是什么?如果我们把它改为608,那么到底什么会改变,什么会受到影响以及如何影响?

让我们重新认识一下压缩的含义

压缩过程合并键、合并列、逐出墓碑、合并SSTables,并在合并的SSTable中创建新索引

compression_throughput_mb_per_sec参数设计用于大型分区,因为整个系统中的压缩被限制为指定的总吞吐量

参考:

为了在混合读写工作负载中保持读性能,您需要减少小型SSTables在单个长时间运行的压缩过程中累积的趋势

参考:

因此,当您更新时,您将更新写入新合并SSTables的速率;turn可帮助您缓解小型SSTABLE在压缩过程中累积的趋势

因此,简言之,当您将压缩吞吐量每秒钟从16增加到608时,您将增加写入SSTABLE所需的写入吞吐量,从而减少创建小SSTABLE的机会,并最终提高读取性能