首页/数据/NoSQL 速查/Distributed 分布式表
ClickHouse56 条

Distributed 分布式表

Distributed 引擎本身不存数据,负责把查询转发到集群各分片并把结果汇总:建表参数为集群名、库名、本地表名与可选分片键。

NoSQL 速查数据更新于 2026-10-12
语法ENGINE = Distributed(cluster, database, local_table[, sharding_key])
写入直接 INSERT 到分布式表时按分片键路由,不带分片键则随机/轮询分布
查询SELECT 会扇出到所有分片,聚合在协调节点二次汇总

示例

示例
CREATE TABLE events_all ON CLUSTER prod AS events_local
ENGINE = Distributed('prod', 'analytics', 'events_local', rand());

-- 按 user_id 哈希分片
-- ENGINE = Distributed('prod', 'analytics', 'events_local', cityHash64(user_id));

SELECT count() FROM events_all;
生产上通常查询分布式表做跨分片统计,对单分片明细/后台任务则直接查本地表更省资源。

易错点

  • 分布式表的行数与本地表关系是求和,统计时不要对两者重复计算
  • 分片键选错会造成数据倾斜,写入量与查询都集中到个别分片

数据来源与参考

  • ClickHouse Docs: Distributed engine
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌