首页 > 解决方案 > 就 commitlog_segment_size_in_mb 而言,cassandra 中的写入是如何工作的?

问题描述

我们在 Cassandra 中发现了错误“17156436 字节的突变对于 16777216 的最大大小来说太大了”。

我知道,我们应该将 commitlog_segment_size_in_mb 增加到 64 mb,因为突变通常使用 commilog_segment_size 的 1/2,而我们使用的是 32 mb。

现在,我明白了 commitlog_segment_size_in_mb 是如何工作的。

是因为写入的大小增加了,还是因为提交日志增加了,因为写入的大小变高了?我的意思是提交日志中的多次写入或一个大小超过 16mb 的写入请求。

提前致谢。

干杯,

穆克什·库马尔

我们将 commitlog_segment_size_in_mb 更新为 64,以便它可以写入超过 16mbs 的数据,因为突变是 commitlog 段的一半。

标签: cassandracassandra-2.1

解决方案


当一个突变大于commitlog_segment_size_in_mb. Cassandra 中的突变是数据的一次更改,可能对应于同一分区的一次或多次更改(插入/删除/更新)。如果您在同一分区上使用未记录的批处理,则此更改也会作为一个突变发送,即使它可能包含数百或数千个更改。

确实,您需要调查为什么会发生这种情况——要么你有太大的未记录批次,最好减少它,或者你有一个太大的单行更新——例如,如果你有大量的元素在集合中,或者太大的文本 - 它也不是很好,所以最好调整数据模型等。


推荐阅读