cassandra - 就 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 段的一半。
解决方案
当一个突变大于commitlog_segment_size_in_mb
. Cassandra 中的突变是数据的一次更改,可能对应于同一分区的一次或多次更改(插入/删除/更新)。如果您在同一分区上使用未记录的批处理,则此更改也会作为一个突变发送,即使它可能包含数百或数千个更改。
确实,您需要调查为什么会发生这种情况——要么你有太大的未记录批次,最好减少它,或者你有一个太大的单行更新——例如,如果你有大量的元素在集合中,或者太大的文本 - 它也不是很好,所以最好调整数据模型等。
推荐阅读
- c++ - 在 C++ Windows 中抓取当前活动窗口的快照
- sql - 状态:失败 - 测试失败:IO 错误:现有连接被远程主机强行关闭
- xcode - Xcode的调试导航器没用吗?
- c# - 模拟在被测方法中初始化的对象
- python - 将包含项目和子项目的文本文件转换为字典或数据结构
- javascript - 如果在 70% 上可见,则匹配 getBoundingClientRect JS
- sql - 循环选择一个记录值到变量中,然后将一个值连接到第一个变量上,然后更新该记录
- facebook - Facebook 应用内浏览器问题,链接包含 target="_blank"
- python - 即使使用python在系统中安装了robotframework,也会收到错误“来自robot import run_cli ImportError:没有名为robot的模块”?
- javascript - JavaScript 字符串计数循环误解