clickhouse--本地表和分布式表,副本机制,分片集群
1、本地表和分布式表
ck的表分为两种:
- 分布式表
一个逻辑上的表,可以理解为数据库中的视图,一般查询都查询分布式表。分布式表引擎会将我们的查询请求路由本地表进行查询,然后进行汇总最终返回给用户。 - 本地表
实际存储数据的表。
Distributed Table & Distributed Engine
ClickHouse分布式表的本质并不是一张表,而是一些本地物理表(分片)的分布式视图,本身并不存储数据。分布式表建表的引擎为Distributed。
Distrbuted_table
Copy Highlighter-hljs
CREATE TABLE IF NOT EXISTS {distributed_table} as {local_table}
ENGINE = Distributed({cluster}, '{local_database}', '{local_table}', rand())
Distributed引擎需要以下几个参数:
- 集群标识符
- 本地表所在的数据库名称
- 本地表名称
- 分片键(sharding key) - 可选
该键与config.xml中配置的分片权重(weight)一同决定写入分布式表时的路由, 即数据最终落到哪个物理表上. 它可以是表中一列的原始数据(如site_id), 也可以是函数调用的结果, 如上面的SQL语句采用了随机值rand(). 注意该键要尽量保证数据均匀分布, 另外一个常用的操作是采用区分度较高的列的哈希值, 如intHash64(user_id).
数据查询的流程

- 各个实例之间会交换自己持有的分片的表数据;
- 汇总到同一个实例上返回给用户。
2、基于表的副本机制
① 特点
- 副本策略表级别
ClickHouse 的副本机制由表引擎(如 ReplicatedMergeTree)实现,用户可以为每张表单独配置副本数。 - 最终一致性
数据写入时,ClickHouse 异步复制到其他副本,可能存在短暂的数据不一致。 - 依赖 ZooKeeper
副本之间的协调通过 ZooKeeper 实现(如副本状态、任务分配)。
② 优点
-
灵活性高
用户可根据业务需求为不同表配置不同的副本策略。 -
存储成本可控
可以为重要表配置多副本,非重要表减少副本。 -
适合 OLAP 场景
高吞吐写入、实时查询。
③ 缺点
- 依赖外部组件(如 ZooKeeper),增加了系统复杂性。
- 数据一致性较弱(最终一致性)。
④ 与HDFS副本机制的区别
基于集群的副本机制(HDFS)
-
特点
- 副本策略全局化:HDFS 的副本机制是集群级别的,所有文件默认存储 3 个副本,用户无法针对单个文件或目录单独配置副本数。
- 强一致性:数据写入时,HDFS 会同步写入所有副本,确保数据强一致性。
- 数据块管理:HDFS 将文件切分为固定大小的数据块(如 128MB),每个块独立存储副本。
-
优点
- 简单易用,用户无需关心副本管理。
- 适合通用文件存储场景(如 Hadoop 生态)。
-
缺点
- 灵活性差,无法针对特定数据单独配置副本策略。
- 存储成本高(默认 3 副本)。
总结

3、分片集群
副本虽然能够提高数据的可用性,降低丢失风险,但是每台服务器实际上必须容纳全量数据,对数据的横向扩容没有解决。
要解决数据水平切分的问题,需要引入分片的概念。通过分片把一份完整的数据进行切分,不同的分片分布到不同的节点上,再通过 Distributed 表引擎把数据拼接起来一同使用。
Distributed 表引擎本身不存储数据,有点类似于 MyCat 之于 MySql,成为一种中间件,通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据。
注意:ClickHouse 的集群是表级别的,实际企业中,大部分做了高可用,但是没有用分片,避免降低查询性能以及操作集群的复杂性。
-
集群写入流程(3 分片 2 副本共 6 个节点)

-
集群读取流程(3 分片 2 副本共 6 个节点)

详细配置参考
相关文章:
clickhouse--本地表和分布式表,副本机制,分片集群
1、本地表和分布式表 ck的表分为两种: 分布式表 一个逻辑上的表,可以理解为数据库中的视图,一般查询都查询分布式表。分布式表引擎会将我们的查询请求路由本地表进行查询,然后进行汇总最终返回给用户。本地表 实际存储数据的表。 …...
react hook useReducer
useReducer useReducer 是 React 中用于状态管理的 Hook,与 useState 不同,它更适合处理复杂的状态逻辑. const [state, dispatch] useReducer(reducer, initialArg, init?) reducer 是一个处理函数,用于更新状态, reducer 里面包含了两个…...
告别阻塞,迎接高效:掌握 AsyncIOScheduler 实现异步任务调度
前言 时间在编程中是宝贵的,直接关联到效率与灵活性,尤其在异步编程里,如何优雅地管理定时任务简直是一门“艺术”。如果你还在用 time.sleep() 来控制延时任务,恐怕你早已体会过它的“痛苦”:程序卡住、线程阻塞、性能急剧下滑。想象一下,你的程序如同一个永远无法按时…...
【基于SprintBoot+Mybatis+Mysql】电脑商城项目之加入购物车和显示购物车列表
🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🚀1.加入购物车-数…...
再谈影刀RPA成长学习路线
近期,我将使用影刀RPA开发各电商平台移动端商品信息爬取,实战流程会在QQ群里分享,欢迎大家进群,一起探讨交流! 1. 影刀RPA学习路线概述 1.1 学习目标与意义 学习影刀RPA的目标在于掌握一种高效的工作自动化工具,以提…...
PHP-综合4
[题目信息]: 题目名称题目难度PHP-综合42 [题目考点]: PHP综合训练[Flag格式]: SangFor{Ouk3i63BuShgxqdRcn_9kMNqKFDe5j4f}[环境部署]: docker-compose.yml文件或者docker tar原始文件。 http://分配ip:2087[题目writeup]:…...
学习笔记-沁恒第五讲-米醋
一,设置音量 上次 这次 #include "uart.h" #include "debug.h" void audio_init() { Usart3_Init(); } void audio_play(u8 num) { u8 string[]{0x7e,0x05,0x41,0x00,num,0x05^0x41^0x00^num,0xef}; u8 i; for(i0;i<7;i) { USART_Se…...
【JavaScript】JavaScript 常见概念 - 变量与数据类型 - 运算符 - 条件语句 - 循环 - 函数 - 数组操作 - 对象
1. 变量与数据类型 变量声明 JavaScript 提供了三种方式来声明变量: var(全局或函数作用域,不推荐)let(块级作用域,推荐)const(常量,块级作用域,推荐&…...
Web自动化之Selenium添加网站Cookies实现免登录
在使用Selenium进行Web自动化时,添加网站Cookies是实现免登录的一种高效方法。通过模拟浏览器行为,我们可以将已登录状态的Cookies存储起来,并在下次自动化测试或爬虫任务中直接加载这些Cookies,从而跳过登录步骤。 Cookies简介 …...
AI手机的技术细节
前序:先说各个功能涉及到的技术,再说宏观系统架构。AI手机有这样几个做法,给手机侧边增加一个按键;把手机的语音助手做的很好,能够快速稳定的进行唤醒;通过特殊形式的触摸手机的曲面屏位置等来进行唤醒AI …...
10. 九转金丹炼矩阵 - 矩阵置零(标记优化)
哪吒在数据修仙界中继续他的修炼之旅。这一次,他来到了一片神秘的金丹谷,谷中有一座巨大的九转金丹炉,炉身闪烁着神秘的光芒。金丹炉的入口处有一块巨大的石碑,上面刻着一行文字:“欲破此炉,需以九转金丹之力,炼矩阵之零,标记优化定乾坤。” 哪吒定睛一看,石碑上还有…...
[实现Rpc] 客户端 | Requestor | RpcCaller的设计实现
目录 Requestor类的实现 框架 完善 onResponse处理回复 完整代码 RpcCaller类的实现 1. 同步调用 call 2. 异步调用 call 3. 回调调用 call Requestor类的实现 (1)主要功能: 客户端发送请求的功能,进行请求描述对服务器…...
Java 大视界 -- 深度洞察 Java 大数据安全多方计算的前沿趋势与应用革新(52)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
山东大学软件学院nosql实验三
实验题目: 用Java做简单查询(2学时) 实验内容 用API方式,做简单查询。 实验要求 在以下要求中选择至少2个,使用Java语言实现数据查询,最终把数据输出到前端界面。 (1)找出年龄小于20岁的所有学生 &…...
正态分布的奇妙性质:为什么奇数阶中心矩(odd central moments)为零?
正态分布的奇妙性质:为什么奇数阶矩为零? 正态分布(Normal Distribution)是统计学中最常见的分布之一,它的钟形曲线几乎无处不在,从身高体重到测量误差,都能看到它的影子。除了均值和方差这两个…...
【入门音视频】音视频基础知识
🌈前言🌈 这个系列在我学习过程中,对音视频知识归纳总结的笔记。因为音视频相关讲解非常稀少,所以我希望通过这个音视频系列,跟大家一起学习音视频,希望减少初学者在学习上的压力。同时希望也欢迎指出文章的…...
游戏引擎学习第120天
仓库:https://gitee.com/mrxiao_com/2d_game_3 上次回顾:周期计数代码 我们正在进行一个项目的代码优化工作,目标是提高性能。当前正在优化某个特定的代码片段,已经将其执行周期减少到48个周期。为了实现这一目标,我们设计了一个…...
【Qt之QQuickWidget】QML嵌入QWidget中
由于我项目开始使用Widgets,换公司后直接使用QML开发,没有了解过如何实现widget到qml过渡,恰逢面试时遇到一家公司希望从widget迁移到qml开发,询问相关实现,一时语塞,很尴尬,粗略研究并总结下。 对qwidget嵌…...
Vue 3 + Vite 项目中配置代理解决开发环境中跨域请求问题
在 Vue 3 Vite 项目中,配置代理是解决开发环境中跨域请求问题的常见方法。通过在 Vite 的配置文件中设置代理,可以将前端请求转发到后端服务器,从而避免浏览器的同源策略限制。 1. 创建 Vue 3 Vite 项目 首先,确保你已经安装了…...
Eureka、ZooKeeper 和 Nacos 之间的对比
Eureka、ZooKeeper 和 Nacos 都是分布式系统中常用的服务注册与发现工具,但它们的定位、功能和适用场景有所不同。作为一名开发者,理解它们之间的对比有助于选择合适的技术栈。以下从多个维度进行详细比较: 1. 基本概述 Eureka 来源ÿ…...
Jaeger介绍(微服务架构分布式追踪利器,Distributed Tracing)(Trace追踪、Span跨度、Context上下文)OpenTelemetry、服务网格Istio、Tempo
文章目录 Jaeger 入门与实践:分布式追踪的利器一、什么是 Jaeger?二、核心概念1. Trace(追踪)2. Span(跨度)3. Context(上下文) 三、Jaeger 架构解析1. Client(客户端&am…...
实测6款热门论文AI工具|毕业之家vs笔捷AIvsPaperRed等,谁能真正拯救论文党?
作为常年测评各类学习办公工具的博主,每到毕业季,后台最多的求助就是“论文写不下去了,求推荐靠谱的AI辅助工具”。毕竟对大多数学生来说,论文写作的痛点太集中:选题迷茫、格式繁琐、查重降重头疼,还要担心…...
web ui自动化测试
AI提示词1.自动生成测试用例【截图】博客系统登录⻚⾯ 根据图⽚提供的登陆界⾯设计UI⾃动化测试⽤例,⻚⾯包含标题、导航栏和登陆表单模块要求: 1)⽤例包含登陆功能(正常、异常)、导航栏的跳转、标题的验证 2ÿ…...
【2026年最新600套毕设项目分享】微信小程序的电子购物系统(30098)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 项目演示视频2 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运…...
具身Agent:从数字世界走向物理世界的下一跃
我将为您创建一篇关于具身Agent的深度技术博客。这是一个引人入胜的主题,涉及AI从数字世界向物理世界的重要转变。 具身Agent:从数字世界走向物理世界的下一跃 关键词 具身认知、人工智能、机器人学、传感器融合、物理交互、自主系统、人机协作 摘要 本文深入探讨具身Ag…...
别再只会用getOpenFileName了!QT文件对话框8个静态函数的保姆级使用指南(含DontResolveSymlinks等参数详解)
QT文件对话框全解析:从静态函数选择到参数调优实战 在QT开发中,文件对话框是用户与本地文件系统交互的重要桥梁。许多开发者习惯性地使用getOpenFileName应对所有场景,却忽略了QT提供的8个静态函数各有其独特的设计意图和使用场景。本文将带…...
告别CubeMX!手把手教你从官网下载并手动移植LWIP到STM32F407(含源码解析)
深度解析:如何从零手动移植LWIP到STM32F407开发板 在嵌入式开发领域,网络通信功能的需求日益增长,而LWIP(轻量级IP协议栈)因其小巧高效的特点,成为资源受限环境下的首选方案。虽然STM32CubeMX等工具可以一…...
小智AI固件烧录进阶:手把手教你用Flash烧录器软件合并bin文件(免命令行)
小智AI固件烧录进阶:手把手教你用Flash烧录器软件合并bin文件(免命令行) 最近在调试小智AI项目时,发现不少开发者对固件合并这一步感到头疼。尤其是那些刚接触嵌入式开发的朋友,看到命令行就发怵。其实,合并…...
仅限首批参会者获取的AI性能分析工具链曝光:含3个未开源插件、2个IEEE基准测试集、1套自动归因DSL
第一章:2026奇点智能技术大会:AI代码性能分析 2026奇点智能技术大会(https://ml-summit.org) 在2026奇点智能技术大会上,AI代码性能分析成为核心议题之一。随着大模型驱动的智能编程助手(如Copilot X、CodeLLM-4.5)在…...
告别`sudo gem install`失败:用Homebrew在Mac上无痛管理多版本Ruby环境
告别sudo gem install失败:用Homebrew在Mac上无痛管理多版本Ruby环境 每次在Mac上安装Cocoapods时遇到sudo gem install报错,是不是让你抓狂?系统权限问题、Ruby版本冲突、网络连接超时——这些坑我全都踩过。今天分享的这套方法,…...
