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,以确保集群内数据一致性。
相关推荐
Dolphin_Home2 小时前
搭建 Hadoop 3.3.6 伪分布式
大数据·hadoop·分布式
姜来可期4 小时前
【分布式数据一致性算法】Gossip协议详解
分布式
begei4 小时前
理解vllm分布式推理服务中的多节点Multi-Node部署方式
分布式
南宫文凯4 小时前
Hadoop-HA(高可用)机制
大数据·hadoop·分布式·hadoop-ha
一个假的前端男6 小时前
RabbitMQ 消息队列
分布式·rabbitmq
liruiqiang057 小时前
DDD - 整洁架构
分布式·微服务·架构
刀客1237 小时前
kafka基本知识
分布式·kafka
菠菠萝宝8 小时前
【Java八股文】11-分布式及场景面试篇
java·分布式·面试·k8s·系统·uuid·mq
莳花微语9 小时前
使用MyCAT实现分布式MySQL双主架构
分布式·mysql·架构
power-辰南12 小时前
高并发系统架构设计全链路指南
分布式·系统架构·高并发·springcloud