我使用Cassandra java driver
。
我每秒收到150k个请求,我将其插入到具有不同分区键的8个表中。
我的问题是哪种方式更好:
我问这个问题是因为,考虑到我的请求大小(150k),批处理听起来像是更好的选项,但因为所有表都有不同的分区键,批处理看起来很昂贵。
答案 0 :(得分:9)
请从以下链接查看我的回答:
Cassandra batch query performance on tables having different partition keys
批次不是为了提高性能。它们用于确保原子性和隔离。
批处理对单个分区写操作有效。但批量经常被错误地用于尝试优化性能。根据批量操作,性能可能实际上恶化。
https://docs.datastax.com/en/cql/3.3/cql/cql_using/useBatch.html
如果这些表之间不需要数据一致性,则使用单个插入。 单个请求在节点之间正确分布或传播(取决于负载平衡策略)。如果你担心请求处理和使用批处理,那么批处理将会给协调器节点带来如此多的额外工作,我认为这样做效率不高:)
答案 1 :(得分:0)
批处理对性能的影响很大。 据我了解,最适合您的解决方案是将每个分区键分成不同的列表,然后使用批处理语句。您将看到对性能的巨大影响。