负面情况下未记录和记录的 Cassandra 批次之间的差异

问题描述 投票:0回答:2

我了解 Cassandra 中 LOGGED 和 UNLOGGED 批次在原子性方面的基本区别。本质上,LOGGED 批次是原子的,而 UNLOGGED 则不是。这意味着 LOGGED 批处理中的所有语句都会一起执行(或不执行)。

在 UNLOGGED 批处理的情况下,如果在组合语句的写入操作期间出现问题,我知道已经执行的语句不会回滚,但 Cassandra 是否会向驱动程序通知整个批处理的失败?

cassandra
2个回答
7
投票

因此logging的批处理使用日志来记录批处理操作,然后执行它,成功时从日志中删除它。 Unlogged 仍然是批处理操作,但没有日志的开销。少量记录是可以的,但是当你扩大规模时,这个批处理日志可能会增长并成为一个问题点。 Datastax 文档实际上涵盖了批处理和一些示例:

https://docs.datastax.com/en/dse/6.0/cql/cql/cql_using/useBatch.html

良好批次的示例

不良批次示例

一般来说,批次有其用途,但我发现它们在过度使用时会导致性能问题,因为将它们分组到协调器节点上会付出代价。我经常向人们推荐这个众所周知的博客,它也概述了有关批次的一些有用信息


0
投票

当创建批次以使所有记录都指向一个分区时,未记录的批次或批次本身会提供良好的性能,并且对于 LOAD,可以根据集群键对它进行预排序。

© www.soinside.com 2019 - 2024. All rights reserved.