Cassandra批量查询和单个插入性能的比较

10
我使用Cassandra Java驱动程序。
我每秒收到150k个请求,将它们插入到8个具有不同分区键的表中。
我的问题是哪种方式更好:
- 批量插入到这些表中 - 逐一插入
我提出这个问题是因为,考虑到我的请求大小(150k),批处理听起来像更好的选择,但由于所有表都具有不同的分区键,批处理似乎很昂贵。
2个回答

14
请检查下面链接中的我的答案:

Cassandra batch query performance on tables having different partition keys

批次操作不是为了提高性能而存在的。它们用于确保原子性和隔离性。

批量操作可对单个分区写入操作产生效果。但是,人们经常错误地尝试使用批处理来优化性能。根据批处理操作,性能可能会实际变差。

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

如果这些表之间不需要数据一致性,则使用单个插入。单个请求将根据负载平衡策略正确地(取决于负载平衡策略)分配或传播到节点。如果您关注请求处理并使用批处理,则批次将给协调节点带来许多额外的工作,这可能不是高效的 :)


1
批处理对性能影响巨大。根据我的理解,最适合您的解决方案是按分区键拆分为不同的列表,然后使用批处理语句。您将看到性能有巨大提升。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接