mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-14 12:30:49 +00:00
New syntax for ReplacingMergeTree.
Some improvements in text.
This commit is contained in:
parent
88f2908800
commit
90b1f5f71b
@ -1,17 +1,40 @@
|
|||||||
# ReplacingMergeTree
|
# ReplacingMergeTree
|
||||||
|
|
||||||
Движок таблиц отличается от `MergeTree` тем, что выполняет удаление дублирующихся записей с одинаковым значением первичного ключа.
|
Движок отличается от [MergeTree](mergetree.md#table_engines-mergetree) тем, что выполняет удаление дублирующихся записей с одинаковым значением первичного ключа.
|
||||||
|
|
||||||
Последний, необязательный параметр движка таблицы — столбец с версией. При слиянии для всех строк с одинаковым значением первичного ключа оставляет только одну строку: если задан столбец версии — строку с максимальной версией, иначе — последнюю строку.
|
Дедупликация данных производится лишь во время слияний. Слияние происходят в фоне в неизвестный момент времени, на который вы не можете ориентироваться. Некоторая часть данных может остаться необработанной. Хотя вы можете вызвать внеочередное слияние с помощью запроса `OPTIMIZE`, на это не стоит рассчитывать, так как запрос `OPTIMIZE` приводит к чтению и записи большого объёма данных.
|
||||||
|
|
||||||
Столбец с версией должен иметь тип из семейства `UInt`, или `Date`, или `DateTime`.
|
Таким образом, `ReplacingMergeTree` подходит для фоновой чистки дублирующихся данных в целях экономии места, но не даёт гарантии отсутствия дубликатов.
|
||||||
|
|
||||||
```sql
|
## Конфигурирование движка при создании таблицы
|
||||||
ReplacingMergeTree(EventDate, (OrderID, EventDate, BannerID, ...), 8192, ver)
|
|
||||||
|
```
|
||||||
|
ENGINE [=] ReplacingMergeTree([ver]) [PARTITION BY expr] [ORDER BY expr] [SAMPLE BY expr] [SETTINGS name=value, ...]
|
||||||
```
|
```
|
||||||
|
|
||||||
Обратите внимание, что дедупликация данных производится лишь во время слияний. Слияние происходят в фоне в неизвестный момент времени, на который вы не можете ориентироваться. Некоторая часть данных может так и остаться необработанной. Хотя вы можете вызвать внеочередное слияние с помощью запроса OPTIMIZE, на это не стоит рассчитывать, так как запрос OPTIMIZE приводит к чтению и записи большого объёма данных.
|
**Параметры ReplacingMergeTree**
|
||||||
|
|
||||||
Таким образом, `ReplacingMergeTree` подходит для фоновой чистки дублирующихся данных в целях экономии места, но не даёт гарантий отсутствия дубликатов.
|
- `ver` — столбец с версией, тип `UInt*`, `Date` или `DateTime`. Необязательный параметр.
|
||||||
|
|
||||||
*Движок не используется в Яндекс.Метрике, но нашёл своё применение в других отделах Яндекса.*
|
При слиянии, из всех строк с одинаковым значением первичного ключа `ReplacingMergeTree` оставляет только одну:
|
||||||
|
|
||||||
|
- Последнюю в выборке, если `ver` не задан.
|
||||||
|
- С максимальной версией, если `ver` задан.
|
||||||
|
|
||||||
|
**Секции ENGINE**
|
||||||
|
|
||||||
|
`ReplacingMergeTree` использует те же [секции ENGINE](mergetree.md#table_engines-mergetree-configuring), что и `MergeTree`.
|
||||||
|
|
||||||
|
|
||||||
|
### Устаревший способ конфигурирования движка
|
||||||
|
|
||||||
|
!!!attention
|
||||||
|
Не используйте этот способ в новых проектах и по возможности переведите старые проекты на способ описанный выше.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
ReplacingMergeTree(EventDate, (OrderID, EventDate, BannerID, ...), 8192, [ver])
|
||||||
|
```
|
||||||
|
|
||||||
|
Все параметры, кроме `ver` имеют то же значение, что в и `MergeTree`.
|
||||||
|
|
||||||
|
- `ver` — столбец с версией. Необязательный параметр. Описание смотрите выше по тексту.
|
||||||
|
Loading…
Reference in New Issue
Block a user