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,以确保集群内数据一致性。
相关推荐
我要用代码向我喜欢的女孩表白2 小时前
在spark集群上在部署一套spark环境,不要影响过去环境
大数据·分布式·spark
2603_954708313 小时前
多微电网系统架构:集群协同与能量互济的网络设计
网络·人工智能·分布式·物联网·架构·系统架构
8Qi84 小时前
RabbitMQ高级篇:消息可靠性、幂等性与延迟消息
java·分布式·微服务·中间件·rabbitmq·springcloud
互联网散修4 小时前
鸿蒙跨设备实时绘图同步:从零到一实现分布式画板
分布式·wpf·harmonyos
REDcker4 小时前
RabbitMQ系列03 - AMQP分层与协议流转
分布式·rabbitmq
一点 内容5 小时前
Scrapy框架深度解析:高效构建分布式爬虫的实战指南
分布式·爬虫·scrapy
Rany-5 小时前
分布式光纤传感:新一代管网探漏监测技术
分布式
硅基诗人6 小时前
Java后端高并发核心瓶颈突破(JVM+并发+分布式底层实战)
java·jvm·分布式
Albert Edison7 小时前
【RabbitMQ】工作队列模式(使用案例)
分布式·rabbitmq·ruby
梦想与想象-广州大智汇7 小时前
MySQL 同步数据到 ClickHouse 方案对比分析
数据库·mysql·clickhouse