最大限度。宽行的大小?

Max. size of wide rows?

理论上,Cassandra 在一个宽行中最多允许 20 亿列。

我听说实际上最多 50.000 cols/50 MB 就可以了; 50.000-100.000 cols/100 MB 可以,但需要一些调整;并且每行不应超过 100.000/100 MB 列。原因是这会给堆带来压力。

这有什么道理吗?

在 Cassandra 中,the maximum number of cells (rows x columns) in a single partition is 2 billion

此外,单个列值不得大于 2GB,但实际上,"single digits of MB" 是一个更合理的限制,因为没有流式传输或随机访问 blob 值。

大于 100Mb 的分区会对堆造成很大的压力。

由于我们遇到了新的写入模式,我们的 table 中的一个使用 cassandra 1.2 超过了每行 100 MB 列的限制。我们在压缩和缓存方面都经历了巨大的压力。顺便说一句,我们有几百 MB 的行。

一种方法是重新设计 table 并将其迁移到设计更好的 table(s),这将使您的宽行保持在该限制内。如果那不是一个选项,那么我建议调整您的 cassandra,以便压缩和缓存配置都可以有效地处理您的宽行。

一些有趣的调整链接:

Cassandra Performance Tuning

in_memory_compaction_limit_in_mb