Cassandra 卡桑德拉·诺德托尔;“压缩状态”;显示值的含义

Cassandra 卡桑德拉·诺德托尔;“压缩状态”;显示值的含义,cassandra,nodetool,Cassandra,Nodetool,我找不到有关“compactionstats”的文档: 使用nodetool compactionstats时,completed和total列上的数值是什么意思? 我的列族的总数据大小约为360 GB,但我的压缩状态显示: pending tasks: 7 compaction type keyspace column family completed total unit progress Compaction Test M

我找不到有关“compactionstats”的文档:

使用
nodetool compactionstats
时,
completed
total
列上的数值是什么意思? 我的列族的总数据大小约为360 GB,但我的压缩状态显示:

pending tasks: 7
compaction type  keyspace   column family   completed      total           unit   progress
Compaction       Test       Message         161257707087   2475323941809   bytes  6.51%
虽然我看到“已完成”的增长缓慢(也是进度;-)


但这个“总数”是如何计算的呢?当我只有360 GB的数据时,为什么是2.5 TB?

您必须打开压缩功能
total
是组成正在压缩在一起的sstables集的未压缩字节总数。如果在cassandra日志文件中对包含压缩的行进行grep,您将发现压缩过程中的sstables。如果将这些尺寸相加,然后乘以柱族压缩比的倒数,则将非常接近总数。默认情况下,在多核系统上验证这一点可能有点困难,因为同时压缩的数量默认为核的数量

您还可以通过查看代码来验证此答案:

-
getCompactionInfo()
使用该类中的
ByteRead
totalBytes
字段
totalBytes
是最终值,在构造函数中通过对压缩过程中的每个文件的
getLengthInBytes()
求和来计算

扫描仪会有所不同,但返回的字节长度是文件的未压缩大小