clickhouse log引擎

CH表引擎的四大分类

MergeTree 家族:ClickHouse 的核心,用于海量数据分析。

Log 家族:用于轻量级、快速写入的临时数据场景。

Integration 引擎:用于与外部系统(如 MySQL, Kafka, S3)集成。

Special 引擎:用于特殊用途(如 Memory, Distributed, MaterializedView)

log

Log 家族是 ClickHouse 中最简单的表引擎,适用于那些一次写入、多次读取的轻量级场景。它们的设计目标是快速地将数据追加到磁盘,结构简单。

不支持索引:无法利用索引进行快速查询。

并发写锁定:当有写操作时,表会被锁定,所有读写操作都会被阻塞,因此不适合高并发写入。

原子性写入:数据写入是原子性的,要么成功,要么失败。

追加式写入:数据总是以块的形式追加到文件末尾。

适用场景

临时存储中间计算结果。

小批量、非核心业务的日志快速写入。

数据量不大(通常建议百万行以下)的配置表或元数据表。

警告:绝对不要在生产环境的核心分析业务中使用 Log 家族引擎!

建表

tiny_log

sql 复制代码
create table learning.tiny_log_table(
   timestamp DateTime,
   level String,
   message String
) engine = TinyLog;

写入

sql 复制代码
insert into learning.tiny_log_table values (now(),'debug','logining');
insert into learning.tiny_log_table values (now(),'info','disk speed is low');

查看文件

打开 cd /var/lib/clickhouse/data/learning/tiny_log_table/

可以看到 tiny_log_table 表中的每个列都有一个独立的.bin文件存储

size.json 存的是 每个列的大小

当你执行 SELECT level FROM ...时,TinyLog只需要读取 level.bin这一个文件,而不需要扫描整行数据。这在分析型场景(OLAP)中非常高效。

对于 TinyLog这种轻量级引擎,这种"一列一个文件"的结构实现最简单,开销最小。

LOG

sql 复制代码
create table learning.log_table(
   timestamp DateTime,
   level String,
   message String
) engine = Log;

Log 和tinyLog 有点区别,额外包含一个小型的元数据文件(__marks.mrk),记录了每个数据块的偏移量。

支持并发读取:多个客户端可以同时读取不同数据块。

跳过数据块:读取时可以直接跳过不需要的数据块,提升查询性能。

性能略好于 TinyLog。

StripeLog

sql 复制代码
create table learning.StripeLog_table(
   timestamp DateTime,
   level String,
   message String
) engine = StripeLog;

StripeLog 把数据全部放到一个文件下 data.bin

总结

ClickHouse 的设计理念是"One Size Does Not Fit All"(没有一种引擎能解决所有问题)。

MergeTree​ 是为了解决 PB 级数据分析。

Log​ 是为了解决 MB 级临时存储。

不支持分布式和副本,恰恰是它的优势所在:这意味着它没有协调节点的网络开销,没有数据同步的延迟,实现了极致的单点性能。

什么时候该用 Log?

记住这个简单的决策树

数据量是否 < 100 万行?

是否只需要快速写入和全量读取?

数据是否允许丢失(无副本)或只是临时性的?

如果以上答案都是"是",那么 Log 引擎就是比 MergeTree 更优的选择。​ 它用"功能阉割"换来了"极致的轻量与速度"。

相关推荐
pjj1985415 小时前
ClickHouse 与 Doris 数据库技术梳理:看懂分析型数据库
数据库·clickhouse
SelectDB技术团队21 小时前
ClickHouse 支持存算分离吗?Doris 社区版原生存算分离怎么落地
数据库·clickhouse·云原生·开源·apache doris·技术选型·存算分层
SelectDB技术团队2 天前
ClickHouse SQL 好学吗?从 MySQL 迁移 Doris 的完整兼容验证
人工智能·sql·mysql·clickhouse·开源·apache doris·增量计算
喵了几个咪3 天前
GoWind UBA 拆解:把 Doris UNIQUE KEY 翻译成 ClickHouse——读数正确性对齐实录
开发语言·后端·clickhouse·微服务·golang·gowind
爱吃火鸡面呀3 天前
MySQL、ClickHouse、Doris、Hive、Spark SQL、Flink SQL 选型对比:优点、缺点与面试话术
hive·mysql·clickhouse
SelectDB技术团队6 天前
SelectDB 架构演进与 ClickHouse 迁移指南
大数据·数据库·clickhouse·云原生·架构·数据分析·apache doris
ClickHouseDB7 天前
使用 ClickHouse 与 Massive 构建实时市场数据应用
clickhouse
秉寒-CHO7 天前
从 ClickHouse 到 StarRocks:我在真实业务中怎么选明细、聚合、主键模型
大数据·clickhouse
IT界的老黄牛8 天前
ClickHouse 运维 SQL 速查:system 表查跑批、内存、合并与磁盘一篇通
大数据·clickhouse·磁盘占用·命令速查·运维排查·system表
wengad9 天前
podman安装clickhouse
clickhouse·podman