posts

ClickHouse 列式数据库

ClickHouse 是一款由 Yandex 开源的面向 OLAP 场景的高性能列式数据库,以向量化执行引擎和极致查询性能著称。本专题系统覆盖列式存储架构原理、SQL 编写与性能优化、MergeTree 家族表引擎详解、数据接入与 ETL 管道、分布式分片+副本集群搭建、监控运维与冷热分层策略,以及实时分析场景(漏斗/留存/A-B 测试)的完整生产实践,并深入 MergeTree 合并原理与数据生命周期、物化视图与实时聚合、查询优化器与执行引擎、备份恢复与容灾、Kafka 实时管道、权限安全加固、复制表与跨机房容灾(ReplicatedMergeTree/ClickHouse Keeper/脑裂防护)、字典与维度 JOIN(Dictionaries/dictGet/星型模型)、列式压缩算法(LZ4/ZSTD/Delta/Gorilla Codec)、查询缓存与预热、时序分析最佳实践(降采样/异常检测)、Mutation 与 TTL(轻量删除/冷热分层)、窗口函数高级实战(排名/聚合/偏移/分布/滑动)、实时数仓架构(ODS/DWD/DWS/ADS 分层与 Lambda/Kappa)、对象存储 S3 集成(冷热分层/TTL 迁移/S3 备份/Data Lake)、生产性能调优(写入/查询/内存/集群)、Schema 建模最佳实践(主键/分区/压缩编码/宽窄表)、JSON 与半结构化数据处理(导入提取/展平/物化列/混合建模)、向量检索与 ANN 索引(HNSW/usearch/相似度查询)、全文检索与倒排索引(tokenbf_v1/text index/模糊匹配)、日志与指标存储(可观测性后端/Grafana/成本治理)、集群扩容与平滑升级(分片重平衡/滚动重启)、内存管理与落盘(spill to disk/OOM 防护)、用户自定义函数(executable UDF/SQL UDF/性能边界),并补齐 Projections 预聚合、trace_log 查询剖析、轻量删除更新、查询并发与资源隔离(workload scheduling)、MySQL/PostgreSQL 方言迁移、容量规划与成本优化等高级主题。

ClickHouse 诞生于 Yandex 的网页分析需求(Metrika),如今在 OLAP 领域与 Druid、Apache Pinot 并列为三大开源实时分析引擎。其向量化执行引擎可将查询性能提升 10-100 倍于传统行式数据库,单次查询可在数秒内处理数十亿行数据——这种单点性能优势使其成为实时日志分析、用户行为追踪、物联网时序数据处理的首选存储方案。


📚 专题导览

本专题系统讲解 ClickHouse 从架构原理到生产部署的完整知识体系:

阶段文章技术要点
原理架构与设计原理列式存储、向量化执行、MergeTree、分布式架构
SQLSQL 编写与性能优化主键设计、物化视图、JOIN 策略、分区与 TTL
引擎表引擎详解MergeTree 家族、复制引擎、集成引擎、Log 引擎
接入数据接入与 ETL批量写入、Kafka 引擎、数据格式、分区策略
集群分布式集群分片策略、副本复制、ZooKeeper、分布式表
运维监控与运维系统表、查询日志、磁盘管理、备份恢复、升级
场景实时分析场景漏斗分析、留存分析、A/B 测试、用户画像、时序
生产生产案例与最佳实践冷热分层、查询缓存、多租户、写入缓冲
深入MergeTree 合并原理与数据生命周期写入路径、Part 合并、稀疏索引、TTL、突变
深入物化视图与实时聚合增量落地、聚合中间状态、异步/刷新式视图、监控
深入查询优化器与执行引擎向量化执行、EXPLAIN、优化器规则、并行与内存
运维备份恢复与容灾FREEZE/clickhouse-backup、增量备份、恢复演练、跨机房容灾
接入Kafka 引擎与实时管道Kafka 表引擎、物化视图落地、offset 管理、调优
生产权限与安全加固RBAC、配额限流、行级安全、TLS、审计、LDAP
容灾复制表与跨机房容灾ReplicatedMergeTree、ClickHouse Keeper、双活架构、脑裂防护
建模字典与维度表 JOINDictionaries、dictGet、Join 引擎、星型模型、ASOF JOIN
存储列式压缩算法深入LZ4/ZSTD、Delta/Gorilla Codec、压缩率调优
性能查询缓存与预热Query Cache、profile events、物化视图预热、热点治理
场景时序分析最佳实践时序建模、窗口聚合、降采样、SQL 异常检测
深入Mutation 与 TTL 深入轻量删除、mutation 机制、TTL 生命周期、冷热分层
SQL窗口函数高级实战排名/聚合/偏移/分布窗口、滑动聚合、TopN
数仓实时数仓架构ODS/DWD/DWS/ADS 分层、实时管道、Lambda/Kappa
存储对象存储 S3 集成冷热分层、TTL 迁移、S3 备份、Data Lake
性能生产性能调优写入/查询/内存/集群优化、慢查询定位流程
建模Schema 建模最佳实践主键、分区、压缩编码、宽窄表权衡
场景JSON 半结构化处理导入提取、性能陷阱、物化列、混合建模
检索向量检索与 ANN 索引HNSW、usearch、相似度查询、向量化检索
检索全文检索与倒排索引tokenbf_v1、text index、模糊匹配、相关性排序
场景日志与指标存储可观测性后端、Grafana、采样、成本治理
运维集群扩容与升级分片重平衡、平滑升级、滚动重启、版本兼容
性能内存管理与落盘查询内存、spill to disk、OOM 防护、内存配额
SQL用户自定义函数executable UDF、SQL UDF、性能边界、部署
SQLJOIN 高级技巧与优化哈希连接、全局表、关联陷阱、分布式 JOIN
SQL数组与高阶函数arrayMap、arrayFilter、Lambda、嵌套数组展开
接入联邦查询与外部数据源MySQL、PostgreSQL、URL 表引擎、联邦查询下推
性能写入链路与吞吐调优单条 INSERT 到批量装载、part 生成、写入放大
深入MergeTree 调优part 生命周期、merge 策略、granularity、索引粒度
性能查询裁剪与数据跳过索引主键索引、分区裁剪、minmax/set/bloom 跳过索引
深入Projections 与预聚合排序/聚合投影、命中判定、与物化视图的取舍
运维查询剖析与 trace_logtrace_log/query_log 诊断、耗时分解、慢查询归因
深入轻量删除与更新Lightweight DELETE/UPDATE、_row_exists、与 mutation 取舍
运维查询并发与资源隔离workload scheduling、查询队列、配额与优先级
SQLSQL 方言迁移MySQL/PostgreSQL 语法差异、类型与函数映射、迁移校验
运维容量规划与成本优化存储与计算容量估算、压缩收益、成本归因

🎯 学习路线

第一阶段:理解架构(1 周)

第二阶段:SQL 与建模(2 周)

第三阶段:集群与生产(1-2 周)


🔗 相关专题


📊 专题统计

维度数据
总文章数44 篇核心教程
难度分布中级 → 高级
总预估阅读时间约 1002 分钟
全部文章 Game Golang Saas Rust 游戏开发 客户端开发 GameDev TypeScript Lua Products
数据库

用户自定义函数:executable UDF、SQL UDF 与性能边界

当内置函数无法满足业务逻辑时,ClickHouse 提供了 SQL UDF 与 executable UDF 两条扩展路径。本文系统讲解 SQL UDF 的 lambda 语法与组合方式、executable UDF 的 XML 配置与进程生命周期、标准输入输出的数据交换格式与类型映射,并用真实压测数据剖析进程级调用的性能边界,最后给出与字典、物化列、物化视图配合的选型建议与踩坑清单。

10 分钟阅读
ClickHouse UDF 扩展能力
数据库

内存管理与落盘:查询内存、spill to disk 与 OOM 防护

本文系统讲解 ClickHouse 的内存管理与落盘机制,从查询级与服务级内存限制参数出发,深入 spill to disk 外部聚合与排序、JOIN 内存策略与算法选择、标记缓存与查询缓存占用,并给出基于 system.query_log 的 OOM 排查步骤与熔断队列限额防护方案,最后附生产参数模板与速查表。实测 100GB 聚合可将单机 RSS 从 90GB 压到 12GB。

12 分钟阅读
ClickHouse 内存管理 性能调优
数据库

集群扩容与升级:分片重平衡、平滑升级与滚动重启

ClickHouse 集群在数据量增长与业务迭代中必然面临扩容与升级两大运维命题。本文从分片与副本两个维度拆解扩容决策,详解 weight 调整、数据重平衡与新分片回填的完整流程,并给出从 24.3 LTS 升级到 25.3 的路径规划、向后不兼容变更的应对、滚动重启的副本切换细节,以及升级窗口内的查询写入影响评估、回滚方案与故障演练清单。

9 分钟阅读
ClickHouse 集群运维 扩容
数据库

全文检索与倒排索引:tokenbf_v1、text index 与模糊匹配

本文系统讲解 ClickHouse 的全文检索能力:从 tokenbf_v1 与 ngrambf_v1 跳数索引的参数与误报率,到原生 text 倒排索引的建表、分词器选择与 granule 粒度设计,再到 hasToken、multiSearchAny、match 等函数的使用与 EXPLAIN 验证方法。文章还对比了与 Elasticsearch 的取舍,并给出生产环境的调优清单。

11 分钟阅读
ClickHouse 全文检索 跳数索引
数据库

向量检索与 ANN 索引:HNSW、usearch 与相似度查询

向量检索把语义相似度变成可计算的几何距离,而 ClickHouse 25.x 把 ANN 索引做进了列存引擎。本文覆盖 Array(Float32) 向量存储布局、HNSW 与 usearch 两种索引后端的建索引与调参、L2 与余弦与内积三类相似度函数的选择、写入与合并对索引的代价、向量加元数据过滤的混合检索、标量量化与内存优化,并给出亿级向量的召回率与延迟实测数据与踩坑清单。

10 分钟阅读
ClickHouse 向量检索 ANN 索引