Сцилладб: кластеризация ключевого декартового произведения размером 600 больше, чем максимум 100 - PullRequest
4 голосов
/ 27 января 2020

Я использую data stax java драйвер для запроса к scylladb, я вижу эту ошибку при чтении данных из scylla RequestHandler: ip: 9042 ответил с ошибкой сервера (размер кластеризованного декартового продукта 600 больше максимального 100), отключение соединения .

Ответы [ 2 ]

10 голосов
/ 28 января 2020

Эта ошибка возвращается, чтобы предотвратить создание слишком больших наборов ограничений, которые могут создать нагрузку на ваш сервер. Если вы знаете о рисках и знаете разумную верхнюю границу количества ограничений для ваших запросов, вы можете вручную изменить максимум в 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

0 голосов
/ 29 января 2020

это зависит от формы данных и параллелизма. Если ваши строки большие и параллелизм высокий, легко заставить scylla исчерпать память. Если ваши строки небольшие и / или параллелизм низкий, все будет хорошо. Можно увеличивать значение параметра, просто имейте в виду, что вы находитесь в опасной ситуации, и вам следует попытаться уменьшить размеры декартовых произведений IN-запроса.

максимальное значение можно установить равным 1000000000.

...