我理解Cassandra中LOGGED和UNLOGGED批次在原子性方面的基本区别。从本质上讲,LOGGED批次是原子的,而UNLOGGED则不是。这意味着LOGGED批处理中的所有语句都可以一起执行(或不执行)。
对于UNLOGGED批处理,如果在编写语句的写操作期间出现问题,我知道已经执行的语句没有回滚,但是Cassandra是否通知驱动程序整个批处理失败? / p>
答案 0 :(得分:1)
因此,记录的批次将使用日志记录批次操作,然后执行该操作,并在成功后将其从日志中删除。未记录仍是批处理操作,但没有日志开销。少量记录是可以的,但是随着您扩大规模,此批处理日志可能会增长并成为问题点。 Datastax文档实际上涵盖了批处理和一些示例:
https://docs.datastax.com/en/dse/6.0/cql/cql/cql_using/useBatch.html
的示例 的示例通常来说,批处理有其用途,但我已经看到它们在过度使用时会导致性能问题,这是因为在协调器节点上进行分组需要付出一定的代价。我经常向人们指出well known blog,它也概述了一些关于批次的有用信息