为什么只获取本地数据而不是集群的所有数据?
Why get only local data instead of all data of the cluster?
我的 Clickhouse 集群(3 个节点)有 3 个分片 1 个副本。我在 node1 上使用 follow ddl 创建了一个 table:
CREATE TABLE partition_v3_cluster ON CLUSTER perftest_3shards_3replicas(
ID String,
URL String,
EventTime Date
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(EventTime)
ORDER BY ID;
然后我对一个节点执行以下 sqls:
INSERT INTO partition_v3_cluster VALUES ('A0001','www.nauu.com', '2019-10-01');
INSERT INTO partition_v3_cluster VALUES ('A0002','www.nauu.com', '2019-10-02');
INSERT INTO partition_v3_cluster VALUES ('A0003','www.nauu.com', '2019-10-03');
分别查询所有3个节点时:
select * from partition_v3_cluster;
每个节点只获取在每个节点上执行之前的记录插入:
例如节点 1:
┌─ID────┬─URL──────────┬──EventTime─┐
│ A0001 │ www.nauu.com │ 2019-10-01 │
└───────┴──────────────┴────────────┘
不应该获取所有数据吗?
您需要创建 DISTRIBUTED 表。
我的 Clickhouse 集群(3 个节点)有 3 个分片 1 个副本。我在 node1 上使用 follow ddl 创建了一个 table:
CREATE TABLE partition_v3_cluster ON CLUSTER perftest_3shards_3replicas(
ID String,
URL String,
EventTime Date
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(EventTime)
ORDER BY ID;
然后我对一个节点执行以下 sqls:
INSERT INTO partition_v3_cluster VALUES ('A0001','www.nauu.com', '2019-10-01');
INSERT INTO partition_v3_cluster VALUES ('A0002','www.nauu.com', '2019-10-02');
INSERT INTO partition_v3_cluster VALUES ('A0003','www.nauu.com', '2019-10-03');
分别查询所有3个节点时:
select * from partition_v3_cluster;
每个节点只获取在每个节点上执行之前的记录插入:
例如节点 1:
┌─ID────┬─URL──────────┬──EventTime─┐
│ A0001 │ www.nauu.com │ 2019-10-01 │
└───────┴──────────────┴────────────┘
不应该获取所有数据吗?
您需要创建 DISTRIBUTED 表。