ClickHouse表引擎简单介绍
1. ClickHouse表引擎的概述
ClickHouse表引擎可分为四个系列,分别是Log、MergeTree、Integration、Special,其中包含了两种特殊的引擎Replicated、Distributed。可以根据自己的业务场景组合使用。MergeTree系列是官方主推的存储引擎,在本文章暂不研究,其他三种主要用于特殊用途,为本文主要介绍对象
2. 表引擎特点介绍
-
Log系列
Log系列表引擎主要用于快速写入小表(1百万行左右),然后全读出来的场景。当需要快速写入和整体读的时候,最有效。
Log系列表引擎的共性是:
- 数据顺序append写到磁盘
- 不支持delete和update
- 不支持索引
- 不支持原子写
- Insert的操作会阻塞select操作
主要的特点是:
- 数据存储磁盘
- 写入时追加数据到文件末尾
- 不支持突变的操作
- 不支持索引,所以select效率比较低
- 非原子性写入数据
该类型的引擎主要有三种:TinyLog、StripeLog、Log
TinyLog:不支持并发读取数据文件,查询性能较差,格式简单,属于存储中间数据
Striplog:支持并发读取数据文件,查询性能比TinyLog好;将多有列存储在用一个文件中,减少了文件个数
Log:支持并发读取数据文件,查询性能比TinyLog好;每个列会单独存储在一个独立的文件中
-
Integration系列
该系统表引擎主要用于对接外部数据源
Kafka:可以将kafka Topic中的数据直接导入到clickhouse
Mysql:将Mysql作为存储引擎,直接可以在Clickhouse中对mysql表进行select等操作
HDFS:直接读取HDFS的特定格式的数据文件
-
Specal系列
Special系列的表引擎,主要是为了特定场景的。
Memory引擎,数据以未压缩的原始形式存在内存中,服务器重启数据就会消失。读写操作不会相互阻塞,不支持索引。简单查询下有非常高的性能表现。一般仅用来测试,适用于非常高的性能,同事数据量不大的场景。
Merge引擎本身不存储数据,但同时从任意多个其他的表中读取数据。读取时自动并行,支持写入。
Distributed引擎,本身不存储数据,但是可以从多个服务器进行分布式查询。读是自动并行的
关于整合:
- Merge引擎:在同一个服务器上的,多个相同结构的物理表,可以被整合成一张大的逻辑表,这张表的数据包含了物理表中的所有数据
- Distributed:在不同的server上,多个相同结构的物理表,可以被整合成一张大的逻辑表,这张逻辑表的数据,就是包含了物理表的所有数据
- 点赞
- 收藏
- 关注作者
评论(0)