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

Ребят, привет еще раз! У меня беда с Join Engine'ом Может, кто

прошарен

Есть таблица Replacing MT с колонками hash(PK), v1, v2 (by default '')

Есть Join- таблица - otc_join
С этими значениями, соединяем по hash

Сначала заполняю v1:

ALTER TABLE transactions update v1 = joinGet('otc_join', 'v1', hash)
WHERE type = ''

а потом, второй:

ALTER TABLE transactions update v2 = joinGet('otc_join', 'v2', hash)
WHERE v1 = 'otc' and v2 = ''


И вот беда в том, что в целом оно работает, но постоянно процедура "застревает" и либо v1 блочится, либо v2

И следующий раз процедура не сработает вообще и приходится все время использовать

kill mutation where not is_done;

В чем может быть дело? Как я могу сделать код стабильным?

Всем неравнодушным большое спасибо!

7 ответов

5 просмотров

а вы дожидаетесь конца предыдущей мутации?

Al-Kul Автор вопроса
Konstantin Ilchenko
а вы дожидаетесь конца предыдущей мутации?

Ммм, видимо нет Но ведь изменение двух разных колонок, разве должно одно блочить другое? Не совсем понимаю, как оно под капотом А если дело в этом, как мне это обойти? Дело в том, что этот код запускается в цикле через драйвер, неужели запускать sleep и проверку, что мутаций незаконченных нет?

Al Kul
Ммм, видимо нет Но ведь изменение двух разных коло...

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

Al-Kul Автор вопроса
Konstantin Ilchenko
а как часто вы запускаете? мутации не предполагают...

Довольно часто, но интервалы где-то по 10 минут Дело в том, что у меня таблица ок 800млн записей И мне надо заполнить колонки прямо в ней, скажем type и change И если где-то это просто Alter table type … Where … То для некоторых записей там нужно бахнуть нехилый подзапрос: change, например, вообще не из этой таблицы достаю Так вот я сделал так Я иду в цикле, забирая из моей таблицы подряд 1млн записей, вычисляю для них change и type, кидаю полученные значения в join таблицу вместе с hash, по которому джоиню потом Ну и потом через эту временную таблицу пришиваю вычисленные значения и двигаюсь дальше А Как иначе это следует делать, и почему этот вариант плох, помимо вот этих зависающих мутаций?

Al Kul
Довольно часто, но интервалы где-то по 10 минут Де...

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

Al-Kul Автор вопроса
Slach [altinity]
или ReplcacingMergeTree + SELECT .. FROM table FIN...

Можете, пожалуйста, чуть подробнее?)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта