【问题标题】:batch size of prepared statement in spring data cassandraspring data cassandra中准备好的语句的批量大小
【发布时间】:2014-09-21 00:11:39
【问题描述】:

我在日志中收到此警告:

WARN [Native-Transport-Requests:17058] 2014-07-29 13:58:33,776 BatchStatement.java(第 223 行)[keyspace.tablex] 的准备好的语句批次大小为 10924,超过指定的阈值 5120到 5804 年。

spring data cassandra中有没有办法指定大小?

Cassandra 2.0.9 和 Spring Data cassandra 1.0.0-RELEASE

【问题讨论】:

  • 该日志语句是在客户端还是服务器上?
  • 它在server.log中的服务器上
  • 我正在使用 datastax python 驱动程序,并且在服务器日志中遇到完全相同的错误。想知道它是什么

标签: cassandra cassandra-2.0 spring-data-cassandra


【解决方案1】:

这只是一个警告,通知您查询大小超过了一定的限制。

查询仍在处理中。背后的原因是更大的批量查询成本很高,并且可能导致集群不平衡。因此事先警告您(开发者)。

cassandra.yaml 中查找batch_size_warn_threshold_in_kb 以调整何时应生成此警告。

这是介绍它的票:https://issues.apache.org/jira/browse/CASSANDRA-6487

【讨论】:

    【解决方案2】:

    我与 DataStax 支持部门密切合作,对 Cassandra 进行了广泛的性能测试和调优。

    这就是我在 SDC* 中创建 ingest() 方法的原因,这些方法在 1.0.4.RELEASE 及更高版本中非常快。

    此方法为您缓存 PreparedStatement,然后循环遍历各个 Bind 值并为每个插入调用 executeAsync。这听起来违反直觉,但却是插入 Cassandra 的最快(也是最平衡)的方式。

    【讨论】:

    • 但这是否意味着我们可以接受警告,或者我们可以对代码进行调整以保持在阈值以下?我认为仅仅为了摆脱消息而开始增加 cassandra.yaml 中的阈值是不明智的。
    • 更改批量大小的最佳方法是什么?只限制数组中的项数调用template.insertAsynchronously()?
    • 在查询中使用的适当等效方法是什么?我看到使用 Cassandra 3.0.7 和 SDC* 1.5.0.M1 的 CassandraOperations.stream() 出现大量批量大小警告和性能下降
    猜你喜欢
    • 2018-10-27
    • 2016-02-05
    • 1970-01-01
    • 2015-08-13
    • 2014-09-27
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    相关资源
    最近更新 更多