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

Cassandra中的批量限制是多少?

俞新翰
2023-03-14

我有一个Java客户端,它批量推送(INSERT)记录到Cassandra集群。批处理中的元素都有相同的行键,所以它们都将被放置在同一个节点中。此外,我不需要事务是原子的,所以我一直在使用未记录的批处理。

每批INSERT命令的数量取决于不同的因素,但可以在5到50000之间。首先,我只是在一批中放入尽可能多的命令并提交。这com.datastax.driver.core.exceptions.InvalidQueryException:批次太大。然后我每批使用1000个INSERT的上限,然后降到300个。我注意到我只是随机猜测,不知道这个限制来自哪里,这可能会给以后带来麻烦。

我的问题是,这个限制是什么?我可以修改它吗?我如何知道一个批次中可以放置多少个元素?当我的批次“满”时?

共有3个答案

祖奇
2023-03-14

我通过将 CHUNKSIZE 更改为较低的值(例如 1)来解决此问题,https://docs.datastax.com/en/cql/3.1/cql/cql_reference/copy_r.html

复制mytable from'myback',CHUNKSIZE=1;

操作慢了很多但至少现在能用

边翔宇
2023-03-14

查看Cassandra日志,您将能够发现如下内容:

错误19:54:13[火柴]的批次大小为103.072KiB,超过50.000KiB的指定阈值53.072KiB。(见batch_size_fail_threshold_in_kb)

左丘季
2023-03-14

我建议不要增加上限,而是分成多个请求。将所有内容放在一个巨大的单个请求中会对协调器产生重大负面影响。将所有内容放在一个分区中可以通过减少一些延迟来提高某些大小批次的吞吐量,但批次从来都不是用来提高性能的。因此,尝试通过使用不同的批次大小来优化以获得最大吞吐量将在很大程度上取决于用例/模式/节点,并且需要特定的测试,因为通常大小会有一个悬崖,它会开始下降。

有一个

# Fail any batch exceeding this value. 50kb (10x warn threshold) by default.
batch_size_fail_threshold_in_kb: 50

cassandra.yaml中的选项来增加它,但一定要进行测试,以确保您实际上有助于而不是损害您的吞吐量。

 类似资料:
  • 在Cassandra中,用于同时执行多个修改语句(插入,更新,删除)。 当你必须更新一些以及删除一些现有的列是非常有用的。 语法 实例: 让我们举个例子来演示命令。 在这里,我们有一个名为“”的表,其中包含列(,,),具有以下数据。 在这个例子中,我们将执行BATCH(插入,更新和删除)操作: 插入一个包含以下信息的新行(,,)。 更新行ID为的学生的列的值为。 删除具有行ID为的雇员的值。 完整

  • 问题内容: 我想知道我可以发送到SQL Server的UNION SELECT语句的数量是否受到限制?在一条SQL语句中,我最多可能要完成36个操作,因此它变得相当长,从字符角度来看。(而且,其中每个带有ASE WHEN语句的SELECT语句本身都有些复杂。) 问题答案: 从SQL 2008 BOL “ Transact-SQL语句中可以出现任意数量的UNION运算符” 同样来自MSDN “ SQ

  • 在C语言中,我知道我们可以用指针来实现这一点: 甚至: 但我们能做点什么,比如三个指向无限的指针吗?例如。: ...依此类推,直到无穷大。 指针的数量有上限吗?如果是,上限是多少?

  • 我是卡桑德拉的新人。我必须使用c#在卡桑德拉中一次性插入50000行。我正在使用卡桑德拉c#驱动程序。我正在使用以下代码在卡桑德拉中插入数据。请帮帮我 我收到错误:批处理中的语句无效:只允许UPDATE、INSERT和DELETE语句。

  • http请求并发的最大数量限制是多少

  • 问题内容: URL的字符数限制是什么,特别是如果URL是由表单的GET方法形成的。 问题答案: 简短答案-实际上限制为2000个字符 如果您将网址的字符数保持在2000个以下,则它们几乎可以在客户端和服务器软件的任何组合中使用。 如果您要定位特定的浏览器,请参阅下文以了解更多特定限制。 更长的答案-首先,标准… RFC 2616(超文本传输​​协议HTTP / 1.1)第3.2.1节说 HTTP协