Scylladb:集群键笛卡尔积大小 600 大于最大值 100

Scylladb : clustering key cartesian product size 600 is greater than maximum 100

我正在使用数据 stax java 驱动程序来查询 scylladb,我在从 scylla 读取数据时看到这个错误 RequestHandler:ip:9042 回复了服务器错误(聚类键笛卡尔乘积大小 600 大于最大值 100),正在断开连接。

返回此错误是为了防止生成太大的限制集,这可能会给您的服务器带来压力。如果您了解风险并知道查询限制数量的合理上限,您可以手动更改 scylla.yaml 中的最大值,例如max_clustering_key_restrictions_per_query: 650。但是请注意,此选项在其描述中有一个警告,应该确认:

Maximum number of distinct clustering key restrictions per query.
This limit places a bound on the size of IN tuples, especially when multiple
clustering key columns have IN restrictions. Increasing this value can result
in server instability.

特别是,将此标志设置在几百以上是有风险的 - 600 应该 没问题,但此时您还可以考虑改写您的查询,以便他们有他们的 IN 限制中的值较少 - 也许将一些查询拆分为多个较小的查询?

来自 Scylla 跟踪器的来源:https://github.com/scylladb/scylla/pull/4797

这取决于数据形状和并发性。如果你的行数很大,并发度很高,很容易导致scylla 运行 out of memory。 如果你的行很小 and/or 并发性很低,一切都会好起来的。 可以增加参数值,但请注意您处于危险境地,您应该尝试减少 IN 查询笛卡尔积的大小。

最大值可以设置为1000000000。