【发布时间】:2020-01-27 18:01:08
【问题描述】:
我正在使用 data stax java 驱动程序查询 scylladb ,我在从 scylla 读取数据时看到此错误 RequestHandler: ip:9042 回复了服务器错误(集群键笛卡尔积大小 600 大于最大值 100),正在断开连接。
【问题讨论】:
标签: scylla
我正在使用 data stax java 驱动程序查询 scylladb ,我在从 scylla 读取数据时看到此错误 RequestHandler: ip:9042 回复了服务器错误(集群键笛卡尔积大小 600 大于最大值 100),正在断开连接。
【问题讨论】:
标签: scylla
返回此错误是为了防止生成过大的限制集,这可能会给您的服务器带来压力。如果您知道风险并知道查询限制数量的合理上限,则可以手动更改 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应该没问题,但此时您也可以考虑重新表述您的查询,以便它们在 @ 987654327@ 限制 - 也许将一些查询拆分为多个较小的查询?
来源自 Scylla 追踪器:https://github.com/scylladb/scylla/pull/4797
【讨论】:
max_partition_key_restrictions_per_query (github.com/scylladb/scylla/blob/…) 可以配置2个选项:github.com/scylladb/scylla/pull/4797/…
这取决于数据形状和并发性。如果你的行很大,并发性很高,很容易导致 scylla 内存不足。 如果您的行很小和/或并发性很低,一切都会好起来的。 增加参数值是可以的,只是要注意你在危险的地方,你应该尝试减少你的 IN 查询笛卡尔乘积大小。
最大值可以设置为1000000000。
【讨论】: