理论上,Cassandra 允许在一个宽行中最多包含 20 亿列。
我听说实际上高达 50.000 cols/50 MB 就可以了;50.000-100.000 cols/100 MB 是可以的,但需要一些调整;并且每行不应该超过 100.000/100 MB 列。原因是这会给堆带来压力。
这有什么道理吗?
理论上,Cassandra 允许在一个宽行中最多包含 20 亿列。
我听说实际上高达 50.000 cols/50 MB 就可以了;50.000-100.000 cols/100 MB 是可以的,但需要一些调整;并且每行不应该超过 100.000/100 MB 列。原因是这会给堆带来压力。
这有什么道理吗?
在 Cassandra 中,单个分区中的最大单元数(行 x 列)为 20 亿。
此外,单个列值可能不大于 2GB,但在实践中,“MB 的个位数”是更合理的限制,因为没有流式或随机访问 blob 值。
大于 100Mb 的分区会对堆造成很大的压力。
由于我们经历了新的写入模式,我们使用 cassandra 1.2 的一张表超过了每行 100 MB 列的限制。我们在压缩和缓存方面都经历了巨大的压力。顺便说一句,我们有数百 MB 的行。
一种方法是重新设计表并将其迁移到设计更好的表,这将使您的宽行保持在该限制之下。如果这不是一个选项,那么我建议调整您的 cassandra,以便压缩和缓存配置都可以有效地处理您的宽行。
一些有趣的链接到要调整的东西: