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

Всем привет. Подскажите, пожалуйста, CollapsingMergeTree ведет себя так же как

и ReplacingMergeTree при инсертах? То есть если я делаю несколько инсертов с одинаковым ключем и с единичками в поле sign, но с разными counts в таблицу с движком CollapsingMergeTree, то в фоне происходит сворачивание этих записей и остается только последняя запись. Или для этого можно использовать FINAL в запросе. В документации явного указания на это я не увидел. Там объясняется алгоритм работы удаления с использованием sign. Но когда я просто экспериментировал с такой таблицей, то записи сворачиваются

8 ответов

30 просмотров

Надо использовать FINAL, все таблицы *MergeTree сливают данные в бэкграунде. У вас видимо данных очень мало и всё быстро под капотом отрабатывает

Stas-Dombrovskyi Автор вопроса
Konstantin Ilchenko
Надо использовать FINAL, все таблицы *MergeTree сл...

Спасибо. Да, использую final, забыл сказать. Но интересно в чем тогда преимущество replacing именно в такой задаче, когда прилетает какое-то количество inserts, которые являются update, фактически.

Stas Dombrovskyi
Спасибо. Да, использую final, забыл сказать. Но ин...

Если вам нужен чистый апдейт, то наверное replacing лучше. Collapsing позволяет удалять

Stas-Dombrovskyi Автор вопроса
Konstantin Ilchenko
Если вам нужен чистый апдейт, то наверное replacin...

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

Stas Dombrovskyi
да, мне нужно и удалять. Я правильно понимаю, что...

разницы с точки зрения производительности между Replacing и Collapsing практически нет все "удаления" и "апдейты" это просто немного разная логика пропусков строк при слиянии партов внутри партиции в background merge trhead pool

Stas Dombrovskyi
да, мне нужно и удалять. Я правильно понимаю, что...

вы хотите слать всегда sign = 1 для обновления через collapsing? Не звучит чем-то надёжным и идеологическии верным. Что будет если 2 потока пришлют разные значения?

Stas-Dombrovskyi Автор вопроса
Konstantin Ilchenko
вы хотите слать всегда sign = 1 для обновления чер...

Да, план такой. Из-за необходимости удаления. Поэтому я и засомневался в эффективном обновлении. Пока шлю данные в один поток. Если будет больше, то либо в коде надо это предусмотреть, либо брать collapsingVersioned. Думал так..

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

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

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