Clickhouse 简介
ClickHouse 是一个高性能的列式存储(Column-oriented)SQL 数据库管理系统(DBMS),专为在线分析处理(OLAP)场景设计。

什么是分析型处理(OLAP)
OLAP(在线分析处理,Online Analytical Processing)主要关注在大规模数据集上执行复杂的分析和查询操作,典型场景包括聚合、统计、报表和多维分析。它的对比对象是OLTP(在线事务处理,Online Transaction Processing),后者更侧重于高频的增删改查事务。
| 类别 | 主要特点 |
|---|---|
| OLTP | 操作少量数据,注重事务效率,响应时间为毫秒级,常用于业务系统日常操作 |
| OLAP | 扫描百万到万亿行级别的海量数据,支持复杂分析计算,强调快速获取统计结果 |
实际应用中,OLAP 查询需具备以下能力:
- 高效处理超大规模数据
- 灵活支持多样化、复杂的分析计算
- 能够在亚秒级甚至实时地返回结果,满足数据分析的及时性需求
列式存储 vs 行式存储
ClickHouse 的核心优势来源于其列式存储架构。
-
行式存储(Row-oriented)
- 数据按“行”连续存储
- 适合 OLTP(快速读取整行数据)
- 查询少量列时也必须加载整行数据

-
列式存储(Column-oriented)
- 数据按“列”连续存储
- 每一列的数据单独存储
- 查询时只读取需要的列 → 极大减少 I/O

性能优势
ClickHouse 在分析场景中表现极其出色:
- 单查询可处理上亿甚至万亿行数据
- 查询延迟可低至毫秒级
- 吞吐能力可达每秒数十亿行数据处理
其高性能来源包括:
- 列式存储减少 I/O
- 向量化执行
- 高效压缩算法
- 并行计算能力
SQL 查询能力
ClickHouse 支持接近 ANSI SQL 标准的查询语法,包括:
GROUP BY/ORDER BYJOIN- 子查询(Subquery)
- 窗口函数(Window Functions)
IN/ 标量子查询等
近似计算
为了进一步提升性能,ClickHouse 提供:
- 近似去重计数(distinct)
- 分位数(quantiles)
- 中位数(median)
- 数据采样(sampling)
自适应 JOIN
ClickHouse 会根据数据规模自动选择最优 JOIN 策略:
- 小数据:使用 Hash Join(快速)
- 大数据:自动切换 Merge Join(稳定)
数据复制与高可用
ClickHouse 采用:
- 异步多主复制(multi-master replication)
- 数据自动同步到多个节点
- 故障恢复支持自动或半自动处理
权限控制(RBAC)
支持基于 SQL 的用户与权限管理:
- 用户(User)
- 角色(Role)
- 权限控制(Access Control)
适用场景
ClickHouse 特别适合以下场景:
- 📈 数据分析平台(BI)
- 📊 日志分析 / 用户行为分析
- 🧾 实时报表系统
- 🌐 广告 / 推荐系统数据分析
- 📡 IoT / 时序数据分析