SummingMergeTree разделено по кортежу - PullRequest
0 голосов
/ 27 июня 2018

Попытка создать SummingMergeTree, разбитую на кортежи следующим образом:

CREATE TABLE partitioned_by_tuple(d Date, x UInt8, w String, y UInt8) ENGINE SummingMergeTree (y) PARTITION BY (d, x) ORDER BY (d, x, w);

Вставка данных в таблицу:

┌──────────d─┬─x─┬─w─────┬─y─┐
│ 2000-01-02 │ 1 │ first │ 3 │
└────────────┴───┴───────┴───┘
┌──────────d─┬─x─┬─w─────┬─y─┐
│ 2000-01-01 │ 2 │ first │ 2 │
└────────────┴───┴───────┴───┘
┌──────────d─┬─x─┬─w─────┬─y─┐
│ 2000-01-01 │ 1 │ first │ 1 │
│ 2000-01-01 │ 1 │ first │ 2 │
└────────────┴───┴───────┴───┘

Попытка оптимизировать таблицу:

OPTIMIZE TABLE partitioned_by_tuple;

И ожидайте, что будет так:

┌──────────d─┬─x─┬─w─────┬─y─┐
│ 2000-01-02 │ 1 │ first │ 3 │
└────────────┴───┴───────┴───┘
┌──────────d─┬─x─┬─w─────┬─y─┐
│ 2000-01-01 │ 2 │ first │ 2 │
└────────────┴───┴───────┴───┘
┌──────────d─┬─x─┬─w─────┬─y─┐
│ 2000-01-01 │ 1 │ first │ 3 │
└────────────┴───┴───────┴───┘

Но таблица не меняется после оптимизации.

Что я делаю не так?

1 Ответ

0 голосов
/ 28 июня 2018

Согласно https://clickhouse.yandex/docs/en/single/#optimize

Если вы укажете FINAL, оптимизация будет выполняться, даже если все данные уже находятся в одной части.

В конце необходимо указать FINAL, чтобы выполнить оптимизацию внутри одной части.

Edit:

После этого PR https://github.com/yandex/ClickHouse/pull/2599 OPTIMIZE сможет использовать FINAL для объединения всех частей.

Теперь оно объединено.

...