cassandra - 负情况下未记录和已记录的 Cassandra 批处理之间的差异

标签 cassandra

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

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

最佳答案

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

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

good batches 的示例

bad batches 的示例

一般来说,批处理有其用途,但我已经看到它们在过度使用时会导致性能问题,因为您将它们分组到协调器节点上会付出代价。我经常向人们指出这个 well known blog也概述了有关批次的一些有用信息

关于cassandra - 负情况下未记录和已记录的 Cassandra 批处理之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27659444/

相关文章:

database - 有没有关于 Apache Cassandra 的终极好文档?

cassandra - IN Cassandra Where 子句中的查询

cassandra - 使用 scylla db 的读/写密集型程序使用哪种压缩策略

nosql - Apache Cassandra 是否有任何 GIS 扩展?

apache-spark - 如何在 Kubernetes 中对外公开 StatefulSet cassandra 集群的无外设服务

hadoop - Cassandra/HDFS 和 Spark 中的数据移动

java - Cassandra 不等待节点可用

Cassandra - 使用 token() 函数选择查询

Cassandra CQL 查询检查多个值

database - 数据库索引的排序字符串表(SSTable)或 B+ 树?