尝试创建按元组划分的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条答案
按热度按时间yrwegjxp1#
根据https://clickhouse.yandex/docs/en/single/#optimize
如果指定final,即使所有数据都已在一个零件中,也将执行优化。
您需要指定
FINAL
最后强制在一个零件内进行优化。编辑:
在这次公关之后https://github.com/yandex/clickhouse/pull/2599 优化将能够使用最终合并所有部分。
现在合并了。