ClickHouse/docs/ru/table_engines/replacingmergetree.md

18 lines
2.1 KiB
Markdown
Raw Normal View History

# ReplacingMergeTree
Движок таблиц отличается от `MergeTree` тем, что выполняет удаление дублирующихся записей с одинаковым значением первичного ключа.
2018-03-15 12:33:12 +00:00
Последний, необязательный параметр движка таблицы — столбец с версией. При слиянии для всех строк с одинаковым значением первичного ключа оставляет только одну строку: если задан столбец версии — строку с максимальной версией, иначе — последнюю строку.
2018-03-15 12:33:12 +00:00
Столбец с версией должен иметь тип из семейства `UInt`, или `Date`, или `DateTime`.
```sql
ReplacingMergeTree(EventDate, (OrderID, EventDate, BannerID, ...), 8192, ver)
```
2018-03-15 12:33:12 +00:00
Обратите внимание, что дедупликация данных производится лишь во время слияний. Слияние происходят в фоне в неизвестный момент времени, на который вы не можете ориентироваться. Некоторая часть данных может так и остаться необработанной. Хотя вы можете вызвать внеочередное слияние с помощью запроса OPTIMIZE, на это не стоит рассчитывать, так как запрос OPTIMIZE приводит к чтению и записи большого объёма данных.
Таким образом, `ReplacingMergeTree` подходит для фоновой чистки дублирующихся данных в целях экономии места, но не даёт гарантий отсутствия дубликатов.
*Движок не используется в Яндекс.Метрике, но нашёл своё применение в других отделах Яндекса.*