【问题标题】:Cassandra batch query vs single insert performanceCassandra 批量查询与单次插入性能
【发布时间】:2017-08-13 07:39:08
【问题描述】:

我使用Cassandra java driver

我每秒收到 15 万个请求,我将这些请求插入到具有不同分区键的 8 个表中。

我的问题是哪种方法更好:

  • 批量插入这些表
  • 一一插入

我问这个问题是因为,考虑到我的请求大小 (150k),批处理听起来是更好的选择,但是因为所有表都有不同的分区键,批处理看起来很昂贵。

【问题讨论】:

    标签: java cassandra datastax


    【解决方案1】:

    请从以下链接查看我的答案:

    Cassandra batch query performance on tables having different partition keys

    批处理不是为了提高性能。它们用于确保原子性和隔离性。

    批处理对于单个分区的写操作是有效的。但是批处理经常被错误地用于优化性能。根据批处理操作,性能实际上可能会变差。

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

    如果这些表之间不需要数据一致性,则使用单次插入。 单个请求在节点之间正确分布或传播(取决于负载平衡策略)。如果您担心请求处理和使用批处理,批处理将在协调节点上负担很多额外的工作,我猜这不会是有效的:)

    【讨论】:

      【解决方案2】:

      批次反而会对性能产生巨大影响。 据我所知,最适合您的解决方案是将每个分区键拆分为不同的列表,然后使用批处理语句。您将看到对性能的巨大影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-19
        • 2021-09-05
        • 2011-07-03
        • 1970-01-01
        • 2014-07-25
        • 2013-07-12
        • 2011-02-28
        • 2014-09-17
        相关资源
        最近更新 更多