ClickHouse为何这么快

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

一、初识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、付费专栏及课程。

余额充值