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,以确保集群内数据一致性。
相关推荐
国科安芯9 小时前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
阿无,10 小时前
RabbitMQ面试题
分布式·rabbitmq
盛世宏博智慧档案12 小时前
全国100个分布式机房环境温湿度智能监测系统建设方案
分布式·机房·温湿度
六bring个六13 小时前
分布式设备连接对端失败问题分析
分布式·分布式软总线
天涯明月199319 小时前
ray深度研究报告
大数据·人工智能·分布式·ray
Rain的Java大神之路1 天前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
大菠萝爱上小西瓜2 天前
【大数据实战】Spark 2.2.2 完全分布式集群搭建
大数据·分布式·spark
肠畔码农2 天前
深度解析 RocketMQ 消费端限流与重平衡(Rebalance):分布式队列分配与流控防雪崩本质
分布式·rocketmq
海兰2 天前
【 Kafka进阶3】Apache Kafka 分布式事件流平台:架构原理与微服务解耦机制简要分析
分布式·架构·kafka
麻瓜记录Jackson3 天前
深入剖析 ZooKeeper 分布式 互斥锁:Curator 之 InterProcessMutex 源码全解(附图解)
java·spring boot·分布式·后端·zookeeper·java-zookeeper