当前位置: 首页 > 知识库问答 >
问题:

spring数据cassandra中预处理语句的批量大小

訾稳
2023-03-14

我在日志中收到以下警告:

WARN[本机传输请求:17058]2014-07-29 13:58:33776 BatchStatement。[keyspace.tablex]的java(第223行)批准备语句的大小为10924,超过了指定的阈值5120乘以5804。

有没有办法在Spring数据卡桑德拉指定大小?

Cassandra 2.0.9和spring数据Cassandra 1.0.0-RELEASE

共有2个答案

益锦程
2023-03-14

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

这就是为什么我在SDC*中创建了ingest()方法,它们在1.0.4中超级快。RELEASE及更高版本。

此方法为您缓存PreparedStatement,然后循环各个绑定值,并为每个插入调用executeAsync。这听起来有悖常理,但却是插入Cassandra的最快(也是最平衡的)方法。

程成天
2023-03-14

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

查询仍在处理中。背后的原因是较大的批处理查询很昂贵,可能会导致集群不平衡。因此事先警告您(开发人员)。

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

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

 类似资料:
  • 我在调试中不断看到这个错误。登录cassandra, 在这个里面 因此,根据Cassandra中的这个标签,https://github . com/krasserm/akka-persistence-Cassandra/issues/33,我看到这是由于输入有效负载大小的增加,所以我将cassandra.yml中的< code > commit log _ segment _ size _ in

  • 我的数据库中有大约1000万个blob格式的文件,我需要转换并以pdf格式保存它们。每个文件大小约为0.5-10mb,组合文件大小约为20 TB。我正在尝试使用spring批处理实现该功能。然而,我的问题是,当我运行批处理时,服务器内存是否可以容纳那么多的数据?我正在尝试使用基于块的处理和线程池任务执行器。请建议运行作业的最佳方法是否可以在更短的时间内处理如此多的数据

  • 我正在尝试更改现有的spring批处理作业(XML配置),它从oracle数据库读取数据,并以所需格式写入txt和XML文件,但现在我想更改相同的实现,从Cassandra数据库而不是oracle读取数据,但我在spring批处理中找不到类似于JdbcCursorItemReader的项目读取器。 有人能告诉我应该使用哪个ItemReader从Cassandra DB读取数据吗?或者我需要创建一个

  • 主要内容:预处理语句及绑定参数,MySQLi 预处理语句,实例 (MySQLi 使用预处理语句),PDO 中的预处理语句,实例 (PDO 使用预处理语句)预处理语句对于防止 MySQL 注入是非常有用的。 预处理语句及绑定参数 预处理语句用于执行多个相同的 SQL 语句,并且执行效率更高。 预处理语句的工作原理如下: 预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 "?" 标记 。例如: 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。 执行:最后,将应用绑定的

  • 我想知道使用比有什么好处? 最简单的方法是: 如您所见,我可以将数据绑定到< code>preparedStatement而无需< code>boundStatements。< code>boundStatement在哪里有用?

  • 我正在实现spring批处理作业,用于使用分区方法处理一个DB表中的数百万条记录,如下所示- > 从分区器中的表中提取唯一的分区代码,并在执行上下文中设置相同的代码。 创建一个包含读取器、处理器和写入器的块步骤,以基于特定分区代码处理记录。 是否可以创建分区/线程来处理像thread1进程1-1000,thread2进程1001-2000等? 如何控制创建的线程数,因为分区代码可以是100个左右,