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

Коллеги, подскажите такой теоретический момент. До сих пор операция UPDATE

в CH считается тяжелой (и понятно, почему). Но тяжелой она считается на каком объеме данных? Ведь если сделать таблицу из 10 строк 10 столбцов и UPDATE чего угодно - сделает моментально. А если миллион? миллиард? триллион?

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

Для простоты можно принять, что только 1 stand-alone сервер.

11 ответов

20 просмотров

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

Алексей-Фирсов Автор вопроса
Denny [Altinity]
update для чего? я иногда заполняю поля задним чис...

Ну у меня есть таблица (150 млн записей, около 80 столбцов), в которой иногда надо поменять значения, скажем в 50 000 строк и в 5 столбцах.... Ну прям очень надо ) Поэтому и интересует, есть ли какие нибудь синтетические тесты для предварительного анализа расчета времени выполнения подобных запросов...

Алексей Фирсов
Ну у меня есть таблица (150 млн записей, около 80 ...

ну 50 млн строк это моментально выполнится, если поля не хранят строки по огромной длины, и сгенерить такую таблицу (вам для проверки не надо 80 столбцов, достаточно orderby полей и тех которые надо проапдейтить) и проверить можно на ноутбуке в докере с 2 гигами, я уверен даже fiddle это выдержит.

Алексей Фирсов
Ну у меня есть таблица (150 млн записей, около 80 ...

используйте движок ReplacingMergeTree. Там без update можно решить

Bobur Usenov
используйте движок ReplacingMergeTree. Там без upd...

Я так и сделал. В конечном итоге. Но можно вместо join использовать sum( union). Теоретически получим тоже самое

Алексей-Фирсов Автор вопроса
Bobur Usenov
используйте движок ReplacingMergeTree. Там без upd...

Нельзя. У меня по задаче нужно считать обязательно количество записей в таблице. Если делать replacing, то пока данные схлопываются, будут дубли и конечное количество будет неверным. А вечно FINAL пихать в запросы, мне кажется, не самый лучший вариант....

Алексей Фирсов
Нельзя. У меня по задаче нужно считать обязательно...

А над replacing повесить argMaxState. Собственно, из похожей задачи у меня вопрос вылез

Алексей Фирсов
Нельзя. У меня по задаче нужно считать обязательно...

можно по другому. версионность завести (например date или version) select будете делать по max( version или date)

Алексей-Фирсов Автор вопроса
Bobur Usenov
можно по другому. версионность завести (например d...

Тогда частые группировки будут в каждом запросе.. Мне кажется, это сильно напряжет и так не слишком серьезный сервер, особенно если запросов будет довольно много одномоментно...

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
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
Карта сайта