ClickHouse/docs/ru/operations/table_engines/replacingmergetree.md
BayoNet 90b1f5f71b New syntax for ReplacingMergeTree.
Some improvements in text.
2018-09-19 11:20:17 +03:00

2.8 KiB
Raw Blame History

ReplacingMergeTree

Движок отличается от MergeTree тем, что выполняет удаление дублирующихся записей с одинаковым значением первичного ключа.

Дедупликация данных производится лишь во время слияний. Слияние происходят в фоне в неизвестный момент времени, на который вы не можете ориентироваться. Некоторая часть данных может остаться необработанной. Хотя вы можете вызвать внеочередное слияние с помощью запроса OPTIMIZE, на это не стоит рассчитывать, так как запрос OPTIMIZE приводит к чтению и записи большого объёма данных.

Таким образом, ReplacingMergeTree подходит для фоновой чистки дублирующихся данных в целях экономии места, но не даёт гарантии отсутствия дубликатов.

Конфигурирование движка при создании таблицы

ENGINE [=] ReplacingMergeTree([ver]) [PARTITION BY expr] [ORDER BY expr] [SAMPLE BY expr] [SETTINGS name=value, ...]

Параметры ReplacingMergeTree

  • ver — столбец с версией, тип UInt*, Date или DateTime. Необязательный параметр.

    При слиянии, из всех строк с одинаковым значением первичного ключа ReplacingMergeTree оставляет только одну:

    • Последнюю в выборке, если ver не задан.
    • С максимальной версией, если ver задан.

Секции ENGINE

ReplacingMergeTree использует те же секции ENGINE, что и MergeTree.

Устаревший способ конфигурирования движка

!!!attention Не используйте этот способ в новых проектах и по возможности переведите старые проекты на способ описанный выше.

ReplacingMergeTree(EventDate, (OrderID, EventDate, BannerID, ...), 8192, [ver])

Все параметры, кроме ver имеют то же значение, что в и MergeTree.

  • ver — столбец с версией. Необязательный параметр. Описание смотрите выше по тексту.