184 похожих чатов

И ещё раз спрошу про деление работы на репликах. Все

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

19 ответов

37 просмотров

мечты, мечты. у вас таблицы replicated? результат вообще правильный получился? сколько партов процессилось?

Artem-Pershin Автор вопроса
Denny [Altinity]
мечты, мечты. у вас таблицы replicated? результат...

Не сверял правильность, таблицы реплекейтед, да, одна реплика, просканило в два раза больше строк с опцией allow_allow_experimental_parallel_reading_from_replicas

Artem Pershin
Не сверял правильность, таблицы реплекейтед, да, о...

ну т.е. вообще непонятно КХ понял что это реплики или нет. ОК версия-то какая у КХ ?

Artem Pershin
22.2

сейчас попробовал на 1м шарде с двумя репликами. короче в такой конфигурации всегда читает с локальной реплики, потому что все данные есть локально. работает если prefer_localhost_replica=0; set allow_experimental_parallel_reading_from_replicas=1, max_parallel_replicas=2, prefer_localhost_replica=0;

Artem-Pershin Автор вопроса
Denny [Altinity]
сейчас попробовал на 1м шарде с двумя репликами. к...

А у вас как таблица партицирована? По 500к с каждой реплики прочитало?

Artem Pershin
А у вас как таблица партицирована? По 500к с каждо...

в общем все там кривое и результаты кажется кривые

Artem-Pershin Автор вопроса
Artem Pershin
Жалко, ну видимо не зря экспериментал

в общем разработчики были в курсе, просто не доделано

Artem Pershin
Жалко, ну видимо не зря экспериментал

одна реплика select count() from rep_test1 prewhere S='a'; 0 rows in set. Elapsed: 19.412 sec. Processed 68.16 million rows, 70.17 GB (3.51 million rows/s., 3.61 GB/s.) 8 реплик set allow_experimental_parallel_reading_from_replicas=1, max_parallel_replicas=8, prefer_localhost_replica=0, use_hedged_requests=0; select count() from rep_test1 prewhere S='a'; 0 rows in set. Elapsed: 3.988 sec. Processed 68.16 million rows, 70.17 GB (17.09 million rows/s., 17.60 GB/s.)

Artem-Pershin Автор вопроса
Denny [Altinity]
одна реплика select count() from rep_test1 prewhe...

ну в 6 раз меньше время. но тут prewhere. интересно какой там алгоритм разбиения работы по рекликам и откуда оно знает что результат независим от кусков

Artem Pershin
ну в 6 раз меньше время. но тут prewhere. интересн...

похоже что реплика проверяет выполняет кто-то работу с этим куском или нет, т.е. скорее всего одна реплика может всю работу забрать себе и 7 будут делать ничего. вот без prewhere select uniqHLL12(S) from rep_test1_d; 1 rows in set. Elapsed: 24.430 sec. Processed 68.16 million rows, 70.17 GB (2.79 million rows/s., 2.87 GB/s.) set allow_experimental_parallel_reading_from_replicas=1, max_parallel_replicas=8, prefer_localhost_replica=0, use_hedged_requests=0; select uniqHLL12(S) from rep_test1_d; 1 rows in set. Elapsed: 4.720 sec. Processed 68.16 million rows, 70.17 GB (14.44 million rows/s., 14.86 GB/s.) это искусственно созданная идеальная таблица для allow_experimental_parallel_reading_from_replicas, в реальной жизни конечно это работать будет раз в году, при солнечной погоде.

Artem-Pershin Автор вопроса
Denny [Altinity]
похоже что реплика проверяет выполняет кто-то рабо...

хотя казалось бы group by по партицированной таблице идеально ложится в кейс. Даже не надо заморачиваться с тем что считать кол-во работы, просто тупо считать что в партициях равное кол-во работы и уже норм будет на большинстве кейсов

Artem Pershin
хотя казалось бы group by по партицированной табл...

в реальной жизни финализация результата с шардов на инициаторе занимает примерно половину времени.

Artem-Pershin Автор вопроса
Denny [Altinity]
в реальной жизни финализация результата с шардов н...

странно, если на входе сотни миллионов строк , а на выходе десятки тысяч

Artem Pershin
странно, если на входе сотни миллионов строк , а н...

у вас другая реальность, у меня по жизни инициатор самое проблемное место.

Artem-Pershin Автор вопроса
Denny [Altinity]
у вас другая реальность, у меня по жизни инициатор...

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

Artem Pershin
видимо такое распределение данных, что дистрибьюте...

в общем оно работает только если prefer_localhost_replica=0, use_hedged_requests=0;

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта