You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cassandra与Scylla批处理语句默认限制差异及Err-2200问题咨询

Cassandra与Scylla批处理默认限制对比

我使用Python的cassandra-driver通过BatchStatement对Cassandra和Scylla执行数据插入/更新操作。当批量处理约500行数据时,只有Cassandra抛出如下错误(Scylla运行正常):

Error from server: code=2200 [Invalid query] message="Batch too large"

相关Python代码

from cassandra import ConsistencyLevel
from cassandra.cluster import Cluster
from cassandra.cluster import ExecutionProfile
from cassandra.cluster import EXEC_PROFILE_DEFAULT
from cassandra.query import BatchStatement

...
cluster = Cluster(contact_points=["localhost"],
                  port=9042,
                  execution_profiles={EXEC_PROFILE_DEFAULT: profile},
                  control_connection_timeout=60,
                  idle_heartbeat_interval=60,
                  connect_timeout=60)
session = cluster.connect(keyspace="catalog")
...
insert_statement = session.prepare(f"INSERT INTO rn6.t01 ({columns}) VALUES ({items})")
batch = BatchStatement(consistency_level=ConsistencyLevel.ONE)

data_frm = pandas.DataFrame(generator.integers(999999, 
                size=(run_setup.bulk_row, run_setup.bulk_col)),
                columns=[f"fn{i}" for i in range(run_setup.bulk_col)])

# prepare data
for row in data_frm.values:
    batch.add(insert_statement, row)

session.execute(batch)

两者默认批处理限制

  • Cassandra:默认有两个核心限制:批处理数据大小上限为64KB,单批包含的语句数量上限为100条。你的500行数据同时超出了语句数量限制和可能的大小限制,因此触发了报错。
  • Scylla:默认批处理数据大小上限为1MB,单批语句数量上限为1000条。这两个阈值都远高于Cassandra的默认值,所以500行数据可以正常执行。

注:这些限制均可通过修改数据库配置参数调整,比如Cassandra的batch_size_fail_threshold_in_kb、batch_size_warn_threshold_in_kb,Scylla的同名参数batch_size_fail_threshold_in_kb等。

内容的提问来源于stack exchange,提问作者JIST

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 09:15:13