链上数据分析:Dune、Flipside 与数据仓库
系统讲解链上数据分析的完整链路:从原始区块、交易与日志的解析,到 ABI 解码与 trace 归集,再到 Dune 的 SQL 查询引擎、Flipside 的策展数据集与自建数据仓库的取舍,涵盖增量同步、数据建模、增量物化视图与查询成本优化等工程细节。
tag
系统讲解链上数据分析的完整链路:从原始区块、交易与日志的解析,到 ABI 解码与 trace 归集,再到 Dune 的 SQL 查询引擎、Flipside 的策展数据集与自建数据仓库的取舍,涵盖增量同步、数据建模、增量物化视图与查询成本优化等工程细节。
系统讲解 ClickHouse 容量规划与成本优化:数据量/增长率/保留期/副本数/压缩比构成的容量模型、压缩比实测方法、存储与计算资源配比公式、冷热分层与 TTL 降采样、列裁剪与编码调优、基于 system.parts 的成本监控,以及扩容阈值与告警实践。
面向从 MySQL/PostgreSQL 迁移到 ClickHouse 的开发者:数据类型映射与 Nullable/LowCardinality 取舍、主键与 ORDER BY 的语义错位、JOIN/GROUP BY/子查询/窗口函数的语法差异、常用函数对照表、UPDATE/DELETE 与事务的缺失、迁移工具选型与全流程校验清单。
系统讲解 ClickHouse 的工作负载调度与资源隔离:max_concurrent_queries 并发上限、Quotas 配额限流、Settings Profiles 差异化配置、查询优先级与 Workload 分类、内存/CPU/IO 隔离手段、多租户方案,以及防止单条大查询拖垮集群的落地实践与常见陷阱。
深入 ClickHouse 的数据变更语义:Mutation 的重量级实现与异步执行、Lightweight DELETE/UPDATE 的 _row_exists 掩码机制、删除标记的可见性与合并时机、幂等与并发语义、ReplacingMergeTree 去重替代方案,以及在高频更新场景下的选型与落地建议。
系统讲解 ClickHouse 查询剖析与链路追踪:system.query_log 关键列解读、ProfileEvents 计数、Query Profiler 采样与火焰图、trace_log 开启与表结构、trace_id/span_id 端到端串联、与 OpenTelemetry/Jaeger 集成、内存与执行细节下钻,以及一套可复用的慢查询定位流程。
深入 ClickHouse Projections:与物化视图的本质差异、ALTER TABLE ADD PROJECTION 语法、normal/aggregate 变体的存储结构、后台物化与合并机制、优化器如何自动选择投影、query_plan 验证与强制使用、预聚合收益评估、存储与写入放大代价,以及生产落地中的常见陷阱。
当内置函数无法满足业务逻辑时,ClickHouse 提供了 SQL UDF 与 executable UDF 两条扩展路径。本文系统讲解 SQL UDF 的 lambda 语法与组合方式、executable UDF 的 XML 配置与进程生命周期、标准输入输出的数据交换格式与类型映射,并用真实压测数据剖析进程级调用的性能边界,最后给出与字典、物化列、物化视图配合的选型建议与踩坑清单。
本文系统讲解 ClickHouse 的内存管理与落盘机制,从查询级与服务级内存限制参数出发,深入 spill to disk 外部聚合与排序、JOIN 内存策略与算法选择、标记缓存与查询缓存占用,并给出基于 system.query_log 的 OOM 排查步骤与熔断队列限额防护方案,最后附生产参数模板与速查表。实测 100GB 聚合可将单机 RSS 从 90GB 压到 12GB。
ClickHouse 集群在数据量增长与业务迭代中必然面临扩容与升级两大运维命题。本文从分片与副本两个维度拆解扩容决策,详解 weight 调整、数据重平衡与新分片回填的完整流程,并给出从 24.3 LTS 升级到 25.3 的路径规划、向后不兼容变更的应对、滚动重启的副本切换细节,以及升级窗口内的查询写入影响评估、回滚方案与故障演练清单。
以 ClickHouse 构建可观测性后端,覆盖日志表设计、指标 rollup 预聚合、Kafka 摄入管道、Grafana 数据源与查询模式、索引与投影加速、冷热分层与 TTL 成本治理,以及高基数与查询熔断防护,并给出可落地的生产容量规划方法。
本文系统讲解 ClickHouse 的全文检索能力:从 tokenbf_v1 与 ngrambf_v1 跳数索引的参数与误报率,到原生 text 倒排索引的建表、分词器选择与 granule 粒度设计,再到 hasToken、multiSearchAny、match 等函数的使用与 EXPLAIN 验证方法。文章还对比了与 Elasticsearch 的取舍,并给出生产环境的调优清单。
向量检索把语义相似度变成可计算的几何距离,而 ClickHouse 25.x 把 ANN 索引做进了列存引擎。本文覆盖 Array(Float32) 向量存储布局、HNSW 与 usearch 两种索引后端的建索引与调参、L2 与余弦与内积三类相似度函数的选择、写入与合并对索引的代价、向量加元数据过滤的混合检索、标量量化与内存优化,并给出亿级向量的召回率与延迟实测数据与踩坑清单。
MergeTree 是 ClickHouse 的基石,性能与它的 part 生命周期、merge 策略、granularity 设置强相关。本文深入 part/granule 存储结构、merge 触发机制与参数(min-rows/max-bytes)、索引粒度权衡、自定义主键顺序、part 分裂与冻结,以及分区策略对 merge 的影响,最后给出完整调优清单。
数组是 ClickHouse 处理嵌套与事件数据的基础类型。本文系统讲解数组类型与构造、arrayMap/arrayFilter/arrayReduce 高阶函数、Lambda 表达式语法、arrayJoin 展开、嵌套数组处理,以及性能注意事项与一个标签/事件属性的实战案例。
ClickHouse 不必把数据都搬进来——MySQL/PostgreSQL 表引擎实时读业务库、URL/File/S3 表引擎把接口与文件当表查、字典外部源做低延迟维表关联。本文系统讲解外部数据源访问方式、性能特征与注意事项,以及用物化视图+定期拉取做数据同步的替代方案。
深入解析现代 OLAP 查询引擎的性能本质:行式与列式存储的取舍、列存压缩与编码、向量化执行引擎与火山模型的差异、Batch 处理与 SIMD 指令级并行、MPP 架构与 Shuffle、Doris/ClickHouse/StarRocks/Trino 四大引擎的架构对比、基于代价的查询优化器与基数估算、谓词下推与列剪枝、Join/聚合执行策略,以及场景化选型与调优实践。
JOIN 是分析查询最容易写错也最容易写慢的算子。本文深入 JOIN 的哈希连接内存模型、单机与分布式 JOIN 的差异、Global Join 广播机制、字典替代 JOIN 的低延迟方案、JOIN 键类型匹配与空值语义陷阱、子查询改写,以及跨场景的选择策略。
写入是分析库最容易踩坑的一环:单条 INSERT 为什么慢、批量 INSERT 与 async_insert 的正确姿势、parts 膨胀与分区过多的代价、ReplacingMergeTree 去重与幂等、Kafka 消费写入优化,以及一套可复现的吞吐测试方法论。
查询为什么快?因为 ClickHouse 不必读所有数据。本文系统讲解查询裁剪三件套:稀疏主键索引如何跳过 granule、分区裁剪如何跳过整个目录、跳数索引(minmax/set/bloom_filter/ngrambf)如何二次过滤,以及用 EXPLAIN indexes 与 PIPELINE 观察裁剪效果、排查裁剪失效的完整方法论。