Максимальная длина строки запроса CQL - PullRequest
0 голосов
/ 01 июня 2018

Есть ли ограничение по максимальной длине строки запроса cql?

Я планирую выполнить длинный запрос этой формы: select * from table where key in ('abc', 'xyz', ...), и я оцениваю длину строки запроса в 60 кБ в худшем случае.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

В ходе тестирования мне удалось получить длину запроса около 90 КБ до того, как система начала выдавать ошибки.

В зависимости от того, как вы выполняете чтение, вы можете столкнуться с ошибкой «Аргумент»список слишком длинный ", прежде чем вы получите 65535 пунктов в вашем списке.Мне удалось воспроизвести это со списком всего из 5000 (используя список идентификаторов, созданный с помощью cat /proc/sys/kernel/random/uuid).

0 голосов
/ 01 июня 2018

За документацию , у вас есть ограничение на количество параметров в запросе (65535), но не длина строки.

Но вам нужно тщательно продумать свой подход - иметь несколькозначения в IN в порядке, но их слишком много приведет к проблемам, потому что узлу, который получает ваш запрос («координатор»), нужно будет пересылать запросы всем узлам, имеющим данные для ваших ключей, ждать результатов,собрать все в один кусок и отправить обратно.Скорее всего, это приведет к перегрузке узла-координатора, а также к аварийному завершению, или к перерыву в работе, или к чему-то еще.

Если вы выполняете ваши запросы параллельно, используя асинхронный API, вы можете поправитьсяпроизводительность по сравнению с использованием IN.

...