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

Ребят, может подсказать кто-нибудь? Есть табличка ReplacingMergeTree, есть в ней

дубли. При чём дубли в неожиданных местах, раз в несколько месяцев просто появляются и никуда не исчезают. Запись в таблицу постоянно происходит, ну и схлопывание более-менее нормально отрабатывает, а тут столкнулись с дублями. Подскажите куда копать, как исправить, если возможно, и почему старые записи не оптимизируются одновременно с новыми. Спасибо

2 ответов

14 просмотров

Merges are eventual and may never happen. It depends on the number of inserts that happened after, the number of parts in the partition, size of parts. If the total size of input parts bigger than the maximum part size then they will never be merged. https://clickhouse.tech/docs/en/operations/settings/merge-tree-settings/#max-bytes-to-merge-at-max-space-in-pool https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/replacingmergetree/ Thus, ReplacingMergeTree is suitable for clearing out duplicate data in the background in order to save space, but it doesn’t guarantee the absence of duplicates.

Причин, почему в Replacing таблицах дубли много. Самый первый вопрос, - имеете ли вы дело с дублями потому что они ЕЩЁ не схлопнулись, или потому что для некоторых записей дубли и НЕ ДОЛЖНЫ схлопнуться. Соответственно, приостановить запись в таблицу, затем либо успешный OPTIMIZE FINAL, либо добавить FINAL к SELECTу, считающему uniqExact по ключу (ну или как вы выявляете дубли). И если дублей после этого не будет - значит по каким-то причинам они ЕЩЁ не схлопывались. ("Ещё" в обычном состоянии может затянуться до бесконечности). Но если после этого всё равно дубли - значит либо всё-таки предыдущий случай (у кликхауса могли быть причины не до предела мерджить (превышение максимального размера парта, например), либо другая группа причин: эти дубли не могли и не должны были схлопнуться. Например, не схлопываются, если записи, образующие дубль попали в разные партишны. Также в случае ReplicatedReplacing таблиц, поверх которых Distributed, с которым мы и работаем, дубли могут получаться, когда записи на разных серверах (т.е. шардирование должно учитывать потребности Replacing таблиц)

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
как быть с принтером? такой подход прокатит?
zamtmn
12
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Я не понимаю, это троллинг или что? Швабрика поддерживают, который буквально пишет на ассемблере взаимодействия с винапи. Я это ещё написал загрузчик и хоть что-то изучаю в о...
Shadow Akira
6
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Карта сайта