ClickHouse ЗаменаMergeTree

Пытаюсь понять, как работает ReplacingMergeTree движок.

У меня есть следующая таблица, настроенная с таким двигателем.

┌─brand─┬─country─┬─id─────┬────updated─┬─version─┐ │ IM │ FR │ 1 │ 2017-09-29 │ 2 │ │ IM │ FR │ 2 │ 2017-09-29 │ 0 │ │ IM │ FR │ 3 │ 2017-09-29 │ 1 │ └───────┴─────────┴────────┴────────────┴─────────┘

На данный момент все в порядке.

Затем выполняю следующее INSERT.

INSERT INTO table(brand, country, id, updated, version) VALUES ('IM', 'FR', 1, '2017-10-29', 3);

Как и ожидалось, есть 2 строки с идентификатором 1:

┌─brand─┬─country─┬─id─────┬────updated─┬─version─┐ │ IM │ FR │ 1 │ 2017-09-29 │ 2 │ │ IM │ FR │ 2 │ 2017-09-29 │ 0 │ │ IM │ FR │ 3 │ 2017-09-29 │ 1 │ └───────┴─────────┴────────┴────────────┴─────────┘ ┌─brand─┬─country─┬─id─────┬────updated─┬─version─┐ │ IM │ FR │ 1 │ 2017-10-29 │ 3 │ └───────┴─────────┴────────┴────────────┴─────────┘

Поскольку первичным ключом для этой таблицы является (brand, country, id), я ожидал бы, что слияние в этой таблице заменит строку с id = 1, имеющую более низкую версию 2.

Запуск слияния с OPTIMIZE TABLE table, чтобы проверить это, похоже, что это не сработало таким образом, и что обе строки на удивление сохранены.

┌─brand─┬─country─┬─id─────┬────updated─┬─version─┐ │ IM │ FR │ 1 │ 2017-10-29 │ 3 │ └───────┴─────────┴────────┴────────────┴─────────┘ ┌─brand─┬─country─┬─id─────┬────updated─┬─version─┐ │ IM │ FR │ 1 │ 2017-09-29 │ 2 │ │ IM │ FR │ 2 │ 2017-09-29 │ 0 │ │ IM │ FR │ 3 │ 2017-09-29 │ 1 │ └───────┴─────────┴────────┴────────────┴─────────┘


person cchantep    schedule 29.09.2017    source источник
comment
Вы можете попробовать это OPTIMIZE TABLE table FINAL? Также покажите нам оператор создания таблицы.   -  person Ramazan Polat    schedule 04.08.2019


Ответы (1)


По логике, это должно работать так, как вы описываете. Возможно, проблема с именем столбца version? Если вы не укажете его при определении таблицы, он будет называться _part_index?

Вы можете предоставить свой show create table?

Существуют тесты для ReplacingMergeTree

Документация: https://clickhouse.yandex/docs/en/table_engines/replacingmergetree.html < / а>

person f1yegor    schedule 03.10.2017
comment
Нет, это называется version целым числом без знака - person cchantep; 04.10.2017