Some improvements in text.
2.8 KiB
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
— столбец с версией. Необязательный параметр. Описание смотрите выше по тексту.