【问题标题】:Cassandra 2.0 eating disk spaceCassandra 2.0 占用磁盘空间
【发布时间】:2013-11-02 17:36:59
【问题描述】:

我在我的应用程序中使用 cassandra,它开始占用磁盘空间的速度比我预期的要快得多,也比手动定义的要快得多。考虑这个最简单的例子:

CREATE TABLE sizer (
    id ascii,
    time timestamp,
    value float,
    PRIMARY KEY (id,time)
  ) WITH compression={'sstable_compression': ''}"

我故意关闭压缩以查看每条记录需要多少字节。

然后我插入几个值,运行nodetool flush,然后检查磁盘上数据文件的大小,看看它占用了多少空间。

结果显示空间浪费巨大。每条记录占用 67 个字节,我不知道这怎么可能。

我的 id 是 13 字节长,它只在数据文件中保存一次,因为它总是相同的用于测试目的。

根据:http://www.datastax.com/documentation/cassandra/2.0/webhelp/index.html#cassandra/architecture/architecturePlanningUserData_t.html

尺寸应该是:

  • 时间戳应该是 8 个字节
  • 值作为列名占用 6 个字节
  • 列值浮点数占用 4 个字节
  • 列开销 15 个字节
  • 总计:33 个字节

为了测试,我的 id 总是一样的,所以如果我理解正确的话,我实际上只有 1 行。

所以,我的问题是如何最终使用 67 个字节而不是 33 个字节。

数据文件大小正确,我尝试插入 100、1000 和 10000 条记录。大小始终为 67 字节。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    文件中讨论了 3 项开销。一个是您已经适应的列开销。第二个是行开销。而且,如果您的 replication_factor 大于 1,那么也会有开销。

    【讨论】:

    • 我的复制因子是 1,我只有 1 行,因为我的 id 始终相同。因此,如果我插入 1000 个值并且我只有一行,那么整体行开销大小并不重要。
    • 另外,行开销是 18 个字节,所以即使我们把它加到总和上,我们仍然少了 16 个字节。
    猜你喜欢
    • 2015-03-24
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    相关资源
    最近更新 更多