ClickHouse为何这么快

本文详细介绍了ClickHouse,一个用于在线分析(OLAP)的列式数据库管理系统,重点讨论了其数据引擎,尤其是MergeTree引擎的工作原理,包括数据分区、列式存储、索引、数据压缩等方面,揭示了ClickHouse高速查询的秘诀。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、初识ClickHouse

1、什么是ClickHouse

ClickHouse 全称 Click Stream, Data WareHouse,是一个用于联机分析 (OLAP) 的列式数据库管理系统 (DBMS)。由俄罗斯本土搜索引擎企业 Yandex 公司为了自己公司自家的 Web 流量分析产品 Yandex.Metrica 开发,后来经过演变,逐渐形成为现在的 ClickHouse。

2、ClickHouse优缺点

ClickHouse 具有 ROLAP、在线实时查询、完整的 DBMS 功能支持、列式存储、不需要任何数据预处理、支持批量更新、拥有非常完善的 SQL 支持和函数、支持高可用、不依赖 Hadoop 复杂生态、开箱即用等许多特点。

ClickHouse 虽然有这么多特点和优点,但显然也存在一些劣势:

  • 没有完整的事务支持
  • 不擅长join操作,且语法特殊
  • 由于采用并行处理机制,即使一个查询也会使用一半CPU资源,所以不支持高并发
  • 稀疏索引导致ClickHouse不擅长细粒度或者 key-value 类型数据的查询需求
  • 缺少高频率,低延迟的修改或删除已存在数据的能力。

二、数据引擎

ClickHouse 是一个OLAP 分析型数据库,也有库和表的概念,而且库和表都提供了不同类型的引擎,所以关于ClickHouse的底层引擎可以分为【数据库引擎】和【表引擎】两种。

1、数据库引擎

ClickHouse 支持在创建库的时候指定库引擎,目前支持5种,分别是:Ordinary,Dictionary,Memory,Lazy,MySQL。其中 Ordinary是默认库引擎,在此类型库引擎下,可以使用任意类型的表引擎。

ClickHouse数据库引擎:

Ordinary:默认引擎,此数据库可以使用任意表引擎。

Dictionary:字典引擎,此数据库会为所有数据字典创建数据表。

Memory:内存引擎,此数据库中的表只存放内存中,重启丢失。

Lazy:日志引擎,此数据库只能使用Log系列的表引擎。

MySQL:MySQL引擎,此数据库可以自动拉取远端MySQL数据

2、表引擎

相比于库引擎,表引擎在 ClickHouse 中的地位更加核心,它直接决定了 CH 中数据如何存储和读取,是否支持并发读写和 Idex 等等。

ClickHouse 的表引擎提供了四个系列(Log、MergeTree、Integration、Special)大约 28 种表引擎,各有各的用途。比如 Log 系列用来做小表数据分 析,MergeTree 系列用来做大数据量分析,而 Integration 系列则多用于外表数据集成。Log、Special、Integration 系列的表引擎相对来说,应用场景有限,功能简单,应用特殊用途,MergeTree 系列表引擎又和两种特殊表引擎(Replicated,Distributed)正交形成多种具备不同功能的 MergeTree 表引擎。

3、MergeTree引擎

MergeTree 系列是 ClickHouse 官方主推的存储引擎,几乎支持全部的核心功能,该系列中,常用的表引擎有:MergeTree、ReplacingMergeTree、 CollapsingMergeTree、 Ver

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值