16

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

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

这有什么道理吗?

4

2 回答 2

23

在 Cassandra 中,单个分区中的最大单元数(行 x 列)为 20 亿

此外,单个列值可能不大于 2GB,但在实践中,“MB 的个位数”是更合理的限制,因为没有流式或随机访问 blob 值。

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

于 2015-03-06T12:26:07.800 回答
3

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

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

一些有趣的链接到要调整的东西:

Cassandra 性能调优

in_memory_compaction_limit_in_mb

于 2015-09-13T18:57:28.730 回答