当前位置: 首页 > news >正文

完整教程:简单介绍一下Clickhouse及其引擎

完整教程:简单介绍一下Clickhouse及其引擎

一、ClickHouse 的优缺点


一、ClickHouse 的优点 ✅

1. 极致的查询性能

  • 列式存储:只读取查询涉及的列,大幅减少 IO。
  • 数据压缩:常见压缩率 5~10 倍,减少存储和带宽消耗。
  • 向量化执行:按批次(block)处理资料,充分利用 CPU SIMD 指令。
  • 并行查询:单机多核 + 集群分布式并行。

结果:在 TB~PB 级数据量上,秒级甚至毫秒级返回复杂聚合查询。


2. 实时写入 + 即时可查

适合 实时数据分析、监控、日志查询


3. 分区、索引、分布式能力

  • 主键索引 (Sparse Index):按分区范围做稀疏索引,快速定位数据。
  • 数据分区/分片 (Sharding & Partitioning):支持海量数据水平扩展。
  • 副本 (Replication):保证高可用和容灾。

许可支撑大规模集群部署


4. 丰富的信息引擎

冷热数据分层、与大数据生态结合方面很灵活。


5. 开源 + 活跃生态

  • Apache 2.0 协议,社区活跃。
  • 已在 Yandex、腾讯、美团、字节跳动等大规模落地。
  • 生态中有 Kafka、Spark、Flink、Airflow 等连接器。

6. 运维成本相对较低


二、ClickHouse 的缺点 ⚠️

1. 不适合事务场景

它是 OLAP 系统,定位是分析,而不是事务处理。


2. 写入删除机制有限

  • 删除 (DELETE/UPDATE)操作本质上是标记删除,素材会在后台合并时真正清理。
  • 写入是 批量块 (block),小量频繁写入效率较差。

适合 append-only 的场景(日志、监控),不适合频繁更新。


3. 学习曲线


4. 资源消耗

  • 凭借就是极致性能CPU、内存换取的

    • 查询时常常消耗大量内存。
    • 并发查询太多时可能出现 OOM。
  • 高性能存储介质(SSD/NVMe)更适合 ClickHouse,否则性能会打折扣。


5. 生态相对不如传统数据库


6. 集群管理复杂性

  • 虽然单机方便,但大规模集群下:

    • 表分片、副本、分布式查询路由,必须良好设计。
    • 运维经验不足时容易遇到资料倾斜、分片不均衡 的问题。

三、总结表格

方面优点缺点
性能秒级/毫秒级查询,列存+压缩+向量化高并发查询时内存占用大
写入高吞吐实时写入不适合频繁更新/删除,小批量写入低效
事务支持原子表缺乏完整 ACID,不能做 OLTP
架构分布式、分片、副本、高可用集群管理复杂
生态外部引擎丰富,社区活跃BI/ML 生态不如 MySQL/PG 丰富
运维单机简便,依赖少大规模集群需要专业经验

一句话总结

ClickHouse =高性能 OLAP 引擎,适合日志分析、指标监控、用户行为分析、大数据实时查询;
不适合 事务处理、频繁更新删除、强一致性场景


二、存储引擎 (Table Engines)


1. 核心概念

在 ClickHouse 里,表引擎 (Table Engine)决定了表的数据如何存储、分布、复制、合并以及如何被查询。


2. 主流存储引擎类别

(A) MergeTree 系列(最常用、最强大)

ClickHouse 的核心存储引擎族,支持就是这索引、分区、TTL、压缩、并行查询 等特性。
常见子类:

特点:适合绝大多数 OLAP 场景,是 ClickHouse 的主力。


(B) 日志型引擎(简便轻量)

不做复杂的合并和索引,性能和功能有限,适合小表、临时表。

  • Log:简单的日志表。
  • StripeLog:数据按列分 stripe 存储。
  • TinyLog:最方便的存储形式,写入文件,几乎没有额外功能。

常见于测试、小规模表。


© 内存型引擎


(D) 外部数据源 / 文件系统引擎

  • File:读写本地文件(支持 CSV、TSV、Parquet、ORC 等)。
  • HDFS:读写 HDFS 文档。
  • S3:读写 AWS S3 或兼容的对象存储。
  • URL:直接通过 HTTP/HTTPS 访问远程材料。
  • MySQL:把 MySQL 表映射为 ClickHouse 表。
  • PostgreSQL:访问 PostgreSQL 数据。
  • ODBC / JDBC:通过 ODBC/JDBC 访问外部数据库。
  • Kafka:从 Kafka 消费内容。
  • RabbitMQ:从 RabbitMQ 读写数据。
  • MongoDB:访问 MongoDB 数据。

适合做 外部数据源接入、ETL、实时内容摄取


(E) 分布式 / 集群引擎


(F) 特殊用途引擎

  • Null:丢弃所有写入,查询时返回空结果(类似 /dev/null)。
  • View:普通视图,不存储数据。
  • MaterializedView:物化视图,存储查询结果。
  • LiveView:实时视图,支持订阅数据变化。
  • Join:专门存储用于 JOIN 的数据。
  • Set:存储一个集合,用于 IN 查询。
  • Buffer:数据先写入内存缓冲区,再异步落到目标表。
  • Merge:将多个表合并为一个逻辑表。
  • Dictionary:存储字典型数据(维表)。

3. 总结

ClickHouse 的引擎大致可以分为几类:

类别代表引擎主要用途
核心存储MergeTree 系列高性能 OLAP,分区、索引、压缩
轻量存储Log、TinyLog、StripeLog小表、临时表
内存Memory临时计算
外部数据File、HDFS、S3、MySQL、Kafka数据交换、ETL、实时导入
分布式Distributed集群查询
特殊用途Null、View、MaterializedView、Join、Buffer特殊场景
http://www.wxhsa.cn/company.asp?id=2186

相关文章:

  • 矩阵分解
  • 11
  • 基于 Gitlab 实现 Go 的 CI/CD
  • 2025.9.11
  • 容斥原理
  • 【B】世良真纯
  • 如何使用jobleap.cn避免简历中的严重错误
  • 在 Zustand 中创建通用 Action 的优雅实践
  • 如何用产品思维优化简历的“用户体验”?
  • 简历如何优化,简历如何投递,面试如何准备?
  • 网络流做题笔记
  • 简历优化全攻略:如何写出吸引HR的简历?
  • 重塑云上 AI 应用“运行时”,函数计算进化之路
  • 25.9.12 C语言基本数据类型
  • Avalonia:基础导航
  • bashrc的一些配置记录
  • H5游戏性能优化系列-----协议相关优化
  • 实现我的第一个langchain应用
  • 小说可视化系统设计(程序员副业项目)
  • MyEMS与开源浪潮:如何重塑全球能源管理的未来格局
  • React Antd or Antd Pro:findDOMNode is deprecated and will be removed in the next major release.
  • 单板挑战4路YOLOv8!米尔瑞芯微RK3576开发板性能实测
  • doms.ul.querySelectorvs document.querySelector:DOM查询的层级关系
  • 穿越钱塘江:一条高铁隧道背后的技术挑战
  • Pwn2Own Automotive 2025 决赛日:49个零日漏洞与88万美元奖金揭晓
  • 9.HPA与VPA
  • MyEMS在行动:揭秘开源能源管理系统如何重塑工业与楼宇的能效未来
  • 题解:P14015 [ICPC 2024 Nanjing R] 生日礼物
  • 吻得太逼真
  • HyperWorks许可回收机制