Scylladb: размер ключевого декартова произведения кластеризации 600 больше максимального 100

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


person ROHAN VADJE    schedule 27.01.2020    source источник


Ответы (2)


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

person Piotr Sarna    schedule 27.01.2020
comment
Есть ли у нас какой-нибудь флаг для включения или отключения этого ограничения ?? - person ROHAN VADJE; 28.01.2020
comment
После изменения конфигурации я получаю сообщение об ошибке = ›декартово произведение с ключом раздела размером 200 больше максимального 100. Если у нас есть свойство типа max_partition_key_restrictions_per_query для чтения ключа раздела. - person ROHAN VADJE; 28.01.2020
comment
@ROHANVADJE есть еще один для ключей разделов: max_partition_key_restrictions_per_query () Можно настроить 2 параметра: github.com/scylladb/scylla/pull/4797/ - person Ivan Prisyazhnyy; 28.01.2020
comment
спасибо, теперь он работает, но мои чтения очень медленные по сравнению с кассандрой. Знаете ли вы какие-либо конфигурации, которые мне нужно настроить, чтобы улучшить производительность чтения. - person ROHAN VADJE; 28.01.2020
comment
@ROHANVADJE здесь был ответ на аналогичный вопрос, stackoverflow.com/a/59687819/6906571. Поделитесь тем, что вы видите, что вы делаете и как вы настраиваете, чтобы давать вам любые предложения. Как правило, не должно быть случаев, при которых Scylla работает хуже. - person Ivan Prisyazhnyy; 28.01.2020
comment
@IvanPrisyazhnyy Я выполняю scylla внутри докера (изображение предоставлено scylladb). Содержимое /etc/scylla.d/cpuset.conf == ›# НЕ РЕДАКТИРОВАТЬ # Этот файл должен автоматически настраиваться с помощью scylla_cpuset_setup # # CPUSET = - cpuset 0 --smp 1 выглядит так, как будто я использую одноядерный ?? правильно ?? Я использую машину с 32 ядрами. - person ROHAN VADJE; 28.01.2020
comment
@ROHANVADJE yes) с CPUSET = - cpuset 0 --smp 1 вы ограничиваете ScyllaDB использовать первое ядро ​​только на вашем процессоре. Некоторые из этих вариантов описаны здесь: hub.docker.com/r/scylladb/scylla - person Ivan Prisyazhnyy; 29.01.2020
comment
@ROHANVADJE - В дополнение к предложенной Иваном ссылке есть документация по передовым методам использования Docker с Scylla. Они размещены на странице docs.scylladb.com/operating-scylla/procedures/tips / Можно было бы ожидать, что Scylla будет масштабироваться линейно с указанным количеством ядер. Если только вы не столкнетесь с другим узким местом, например, с пропускной способностью ввода-вывода. Но вы обязательно должны увидеть масштаб пропускной способности по мере увеличения количества ядер. - person ScyllaGreg; 30.01.2020

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

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

person javaamtho    schedule 29.01.2020