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

Cassandra批量准备语句大小警告

西门展
2023-03-14

我在调试中不断看到这个错误。登录cassandra,

WARN  [SharedPool-Worker-2] 2018-05-16 08:33:48,585 BatchStatement.java:287 - Batch of prepared statements for [test, test1] is of size 6419, exceeding specified threshold of 5120 by 1299.

在这个里面

   where,
                    6419 - Input payload size (Batch)
                    5120 - Threshold size
                    1299 - Byte size above threshold value

因此,根据Cassandra中的这个标签,https://github . com/krasserm/akka-persistence-Cassandra/issues/33,我看到这是由于输入有效负载大小的增加,所以我将cassandra.yml中的< code > commit log _ segment _ size _ in _ MB 增加到< code>60mb,我们不再面临此警告。

这种警告有害吗?增加commitlog_segment_size_in_mb会影响性能吗?

共有2个答案

百里诚
2023-03-14

提交日志段大小以mb为单位表示提交日志归档或时间点备份的块大小。仅当在commitlog_archiving.properties文件中配置了archive_command或restore_command时,这些选项才处于活动状态。默认大小为32mb。

根据Apache Cassandra专家管理手册:

you must ensure that value of commitlog_segment_size_in_mb must be twice the value of max_mutation_size_in_kb.

你可以参考一下:

17076203字节的突变对于16777216的最大大小来说太大

冯宪
2023-03-14

这与提交日志大小没有直接关系,我想知道为什么它的更改会导致警告消失...

批大小阈值由默认为 5kb(5120 字节)batch_size_warn_threshold_in_kb参数控制。

您可以将此参数增加到更高的值,但您确实需要有充分的理由使用批处理-了解它们使用的上下文会很好…

 类似资料:
  • 使用卡桑德拉准备语句时,将字段与静态值绑定是否有任何好处? 例如,即使我总是使用静态值“Active”,status是否也应该有一个bind变量?如果是,为什么? 更新用户设置status='Active',其中user_id=:userid

  • 我在日志中收到以下警告: 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-REL

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

  • 问题内容: 我试图用大约50,000行10列填充Java中的resultSet,然后使用的方法将它们插入到另一个表中。 为了使过程更快,我进行了一些研究,发现在将数据读入resultSet时,fetchSize起着重要的作用。 如果fetchSize太低,可能会导致到服务器的行程过多,而fetchSize太高则会阻塞网络资源,因此我做了一些尝试,并设置了适合我的基础结构的最佳大小。 我正在阅读此r

  • 我有一个脚本可以插入大量的数据。此数据主要是前一个insert的复制,但至少有一个值不同。因此,我准备语句并绑定参数以执行和重复。 我现在使用的代码(一次全部大容量插入): 我想要实现的是,数据将用像上面这样的准备好的语句插入,但每个批处理的限制是1000(或任何其他数字)。我不能让这件事发生。我尝试使用和其他方法,但无法使其工作。

  • 问题内容: 您将如何用PHP编写一个准备好的MySQL语句,每次使用不同数量的参数?这样的查询的示例是: 该条款将有不同数量的s各自运行它时。 我心中有两种可能的解决方案,但想看看是否有更好的方法。 可能的解决方案1 使该语句接受100个变量,并用保证不在表中的伪值填充其余变量;多次调用100多个值。 可能的解决方案2 请勿使用准备好的语句;严格构建并运行查询以检查可能的注入攻击。 问题答案: 我