我在我的应用程序中使用 cassandra,它开始占用磁盘空间的速度比我预期的要快得多,也比手动定义的要快得多。考虑这个最简单的例子:
CREATE TABLE sizer (
id ascii,
time timestamp,
value float,
PRIMARY KEY (id,time)
) WITH compression={'sstable_compression': ''}"
我故意关闭压缩以查看每条记录需要多少字节。
然后我插入几个值,运行nodetool flush
,然后检查磁盘上数据文件的大小,看看它占用了多少空间。
结果显示巨大的空间浪费。每条记录占用 67 个字节,我不确定这怎么可能。
我的 id 长度为 13 个字节,它只在数据文件中保存一次,因为它对于测试目的总是相同的。
尺寸应为:
- 时间戳应该是 8 个字节
- 作为列名的值占用 6 个字节
- 列值浮点数占用 4 个字节
- 列开销 15 字节
- 总计:33 个字节
为了测试起见,我的 id 总是相同的,所以如果我理解正确的话,我实际上只有 1 行。
所以,我的问题是我如何最终使用 67 个字节而不是 33 个字节。
数据文件大小正确,我尝试插入 100、1000 和 10000 条记录。大小始终为 67 字节。