【问题标题】:Scylladb : clustering key cartesian product size 600 is greater than maximum 100Scylladb:聚类关键笛卡尔产品大小600大于最大值100
【发布时间】:2020-01-27 18:01:08
【问题描述】:

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

【问题讨论】:

    标签: scylla


    【解决方案1】:

    返回此错误是为了防止生成过大的限制集,这可能会给您的服务器带来压力。如果您知道风险并知道查询限制数量的合理上限,则可以手动更改 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

    【讨论】:

    • 我们是否有一些标志来启用或禁用此约束??
    • 配置更改后我收到此错误 => 分区键笛卡尔产品大小 200 大于最大值 100 。我们是否应该有 max_partition_key_restrictions_per_query 之类的属性来读取分区键。
    • @ROHANVADJE 还有一个分区键:max_partition_key_restrictions_per_query (github.com/scylladb/scylla/blob/…) 可以配置2个选项:github.com/scylladb/scylla/pull/4797/…
    • 谢谢,它现在可以工作了,但是与 cassandra 相比,我的阅读速度非常慢。你知道我需要调整哪些配置以获得更好的读取性能吗?
    • @ROHANVADJE 这里有类似问题的答案stackoverflow.com/a/59687819/6906571。分享您所看到的、您所做的以及您如何配置以允许给您任何建议。一般来说,不能有 Scylla 表现更差的用例。
    【解决方案2】:

    这取决于数据形状和并发性。如果你的行很大,并发性很高,很容易导致 scylla 内存不足。 如果您的行很小和/或并发性很低,一切都会好起来的。 增加参数值是可以的,只是要注意你在危险的地方,你应该尝试减少你的 IN 查询笛卡尔乘积大小。

    最大值可以设置为1000000000。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-08
      • 2020-07-05
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多