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

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

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

8 ответов

10 просмотров

Надо использовать 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. Думал так..

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

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

Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
@sand_witch скорее к тебе вопрос, добавил в .cabal webdriver-w3c и вот такая ошибка от nix develop error: Package ‘script-monad-0.0.4’ in /nix/store/7vdxbra0kwbr0ys0kc5...
Fedor
5
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Карта сайта