首页/数据/NoSQL 速查/remote 与 cluster 跨实例查询
ClickHouse56 条

remote 与 cluster 跨实例查询

remote 表函数可在一条 SQL 里查询其他 ClickHouse 实例的表,cluster/clusterAllReplicas 按集群拓扑展开:适合临时跨集群对账与迁移校验。

NoSQL 速查数据更新于 2026-10-13

remote 与 cluster 表函数是什么

remote 表函数可以在一条 SQL 里查询其它 ClickHouse 实例的表,cluster 与 clusterAllReplicas 则按集群拓扑展开:cluster 对每个分片各查一次,clusterAllReplicas 覆盖全部分片的所有副本。它适合临时的跨集群对账与迁移校验,不需要提前建分布式表。跨实例查询会传输结果数据,过滤条件下推能力有限,大范围对账建议先在各集群内聚合再比较。

基本信息

remoteremote('host:9000', db, table[, user, password]),查询单个实例
clustercluster('prod', db, table),每个分片各查一次
clusterAllReplicas覆盖全部分片的所有副本
典型用途跨集群对账、迁移校验、临时查询
所属系统ClickHouse 表函数

典型使用场景

  • 跨集群对账:对比两套集群里同一张表的行数与关键指标
  • 迁移校验:新集群上线前核对数据是否完整
  • 临时查询:不值得为一次需求去建分布式表
  • 副本巡检:用 clusterAllReplicas 看各副本行数是否一致
  • 故障排查:确认某个分片上的数据是否正常

跨实例查询

跨实例查询
SELECT count() FROM remote('10.0.0.8:9000', 'analytics', 'events');   -- 查单个远端实例

SELECT hostName(), count()                                            -- 遍历所有副本
FROM clusterAllReplicas('prod', 'analytics', 'events')
GROUP BY hostName();

函数读法

函数扫描范围注意
remote指定单个实例需要能直连目标端口
cluster每个分片一次副本不重复统计
clusterAllReplicas每个分片的每个副本副本数据相同会重复计数
连接信息主机、库、表可携带用户名与密码
返回数据各节点结果汇总传输量随结果集增大
跨实例查询会把结果数据传回本地节点,过滤条件下推能力有限;大范围对账建议先在各集群内做聚合,再比较聚合结果,传输量小且更可控。
remote 连接信息里硬编码的密码会进入查询日志,敏感场景应改用命名集合或预先建好的分布式表。
clusterAllReplicas 会遍历所有副本,副本数据一致时按副本聚合会产生重复计数,统计口径先要明确是分片维度还是副本维度。

易错点

  • remote 连接信息里硬编码的密码会进入查询日志,敏感场景改用命名集合或分布式表
  • clusterAllReplicas 会遍历所有副本,副本数据相同时按副本聚合会得到重复计数
  • 把 remote 当长期数据链路使用:缺少重试与故障隔离,临时手段不适合固化
  • 跨集群查询未先过滤就全表拉取,网络传输成为瓶颈

数据来源与参考

  • ClickHouse Docs: Table functions (remote, cluster)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌