clickhouse分布式表插入数据不用带ON CLUSTER

向分布式表插入数据时 ,通常 不需要使用 ON CLUSTER ,因为分布式表的写入操作会自动将数据分发到底层表(bm_online_user_count_part)的对应节点。

但对于 DDL(数据定义语句,例如 ALTER TABLE 操作,在分布式环境中修改底层表时,建议使用 ON CLUSTER,以确保所有相关节点上的表结构和数据同步。


区分 DDL 和 DML

  1. DML(数据操作语句,例如 INSERT 向分布式表插入数据时,只需简单地插入即可,ClickHouse 会自动将数据分布到各节点的底层表,无需 ON CLUSTER

    复制代码
    NSERT INTO aaa.bm_online_user_count (company_code, user_count, hour_str) VALUES ('company1', 100, '2024-12-23 15:00'); 
  2. DDL(数据定义语句,例如 ALTER TABLEDELETE 在分布式环境中对底层表执行 ALTER TABLE 操作时,需要使用 ON CLUSTER 来确保所有节点同步执行操作:

    复制代码
    ALTER TABLE aaa.bm_online_user_count_part ON CLUSTER default DELETE WHERE hour_str = '2024-12-23 14:00'; 

为什么插入不需要 ON CLUSTER

  • 分布式表本身就是一个逻辑视图,它会根据其配置自动将数据路由到对应的底层表所在节点。
  • INSERT 操作在分布式表中不直接作用于多个节点,而是由 ClickHouse 的分布式引擎完成分发。

为什么 ALTERDELETE 需要 ON CLUSTER

  • ALTERDELETE 是直接针对底层表执行的操作,它们不会通过分布式引擎自动分发到所有节点。
  • 如果不加 ON CLUSTER,操作仅会在当前节点生效,导致其他节点上的数据或表结构不一致。

总结

  • 插入数据: 向分布式表 aaa.bm_online_user_count 插入数据时不需要 ON CLUSTER
  • 修改数据: 对底层表 aaa.bm_online_user_count_part 进行 DELETE 或其他修改操作时,需要使用 ON CLUSTER,以确保集群内数据一致性。
相关推荐
Evand J7 小时前
【论文复现】MATLAB例程,存在测距误差的WSN无锚点分布式自定位,《WSN中存在测距误差的无锚点分布式自定位方法》
开发语言·分布式·matlab·定位·导航·wsn
格子软件8 小时前
2026年分布式GEO代理流量调度:源码级状态机防重挂实战
java·vue.js·人工智能·spring boot·分布式·vue
2301_801184758 小时前
kafka-zookeeper
分布式·zookeeper·kafka
大明者省10 小时前
四大模态大模型训练体系全解析(架构+范式+分布式+算力成本·)
笔记·分布式·架构
格子软件11 小时前
2026年分布式GEO代理架构:多租户动态数据源隔离与流控源码解构
java·vue.js·人工智能·分布式·架构·vue·geo
nbsaas-boot11 小时前
微服务架构下的分布式事务解决方案深度对比与实战选型
分布式·微服务·架构
livemetee11 小时前
关于【Kafka高可用配置】
分布式·kafka
TTBIGDATA11 小时前
【Ambari Plus】11.Kafka 安装
大数据·hadoop·分布式·kafka·ambari·hdp·ambari plus
李昊哲小课12 小时前
Ubuntu26.04 搭建 Hadoop3.5.0 完全分布式
大数据·hadoop·分布式·ubuntu·hdfs·mapreduce
newbe3652414 小时前
我们如何使用 impeccable 优化前端界面设计与实现稳定性
前端·人工智能·分布式·github·aigc·wpf