ReadTimeout: ошибка сервера: code = 1200 [Время ожидания для узла-координатора ожидания ответов узлов реплики] - PullRequest
0 голосов
/ 07 октября 2019

Мы создали таблицу со схемой ниже:

создать таблицу test_table (текст col_1, текст col_2, текст col_3, текст col_4, текст col_5, текст col_6, текст col_7, первичный ключ (col_1, col_2, col_3, col_4, col_5));

эта таблица содержит почти миллиарды записей. (огромное количество записей)

и пыталась выполнить запрос, как показано ниже,

выберите * из test_table, где col_1 = «значение» и col_2 = «значение»;-> получение результатов

, но когда мы попробовали, как показано ниже,

select * from test_table где col_1 = 'value' и col_3 = 'value' разрешить фильтрацию;-> не получаются результаты

select * from test_table где col_1 = 'value' и col_4 = 'value' разрешить фильтрацию;-> не получаются результаты

мы получаем ошибку ниже:

"ReadTimeout: Ошибка сервера: code = 1200 [Время ожидания для узла координатора истеклоответы узлов реплики] message = "Тайм-аут операции - получено только 0 ответов." info = {'receive_responses': 0, 'required_responses': 1, 'консистентность': 'ONE'} "

После того, как я получил вышеуказанную ошибку, я увеличил параметры тайм-аута с 5 секунд до 60 минут в файле конфигурации cassandra.yaml.

затем пришел результат, но он занял очень много времени с 50 минутами времени выполнения.

Может кто-нибудь предложить мне решить проблему «ReadTimeout:» без расширения конфигурации

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Используя «разрешить фильтрацию», вы выполняете полное сканирование таблицы, время ожидания которого является причиной ошибки, которую вы получаете.

Вам необходимо изменить ключи раздела / кластеризации так, чтобыВы можете выполнять свои запросы без аргумента «разрешить фильтрацию».

Когда вы выполняете только указанные выше запросы, вы можете подумать о дублировании данных в 3 таблицы:

create table test_table_1(col_1 text, col_2 text, col_3 text, col_4 text, col_5 text, col_6 text, col_7 text, PRIMARY KEY (col_1, col_2));
create table test_table_2(col_1 text, col_2 text, col_3 text, col_4 text, col_5 text, col_6 text, col_7 text, PRIMARY KEY (col_1, col_3));
create table test_table_3(col_1 text, col_2 text, col_3 text, col_4 text, col_5 text, col_6 text, col_7 text, PRIMARY KEY (col_1, col_4));

Ваши запросытогда будет:

select * from test_table_1 where col_1='value' and col_2='value';
select * from test_table_2 where col_1='value' and col_3='value';
select * from test_table_3 where col_1='value' and col_4='value';

Помните: в Кассандре вы создаете таблицы вокруг ваших запросов.

0 голосов
/ 07 октября 2019

какие у вас раздел и ключи кластера? тайм-ауты приводят к тому, что размер данных слишком велик для обработки в данный период временипопробуйте изучить нумерацию страниц и вторичные индексы. хотя вторичные индексы могут снизить производительность Райта.

...