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 更优的选择。​ 它用"功能阉割"换来了"极致的轻量与速度"。

相关推荐
l1t2 天前
DeepSeek总结的clickhouse的二进制文件自解压机制
clickhouse
l1t3 天前
DeepSeek总结的pg_clickhouse 与 chdb 更新:编码、嵌套与类型
数据库·clickhouse·postgresql
拔剑纵狂歌5 天前
ClickHouse system.query_log 字段详解与排障实践
后端·clickhouse·1024程序员节
SelectDB技术团队6 天前
Apache Doris 高性能 Open Lake Variant 读写技术解析(含对比数据)
数据结构·数据库·clickhouse·日志·apache doris·selectdb·湖仓架构升级
SelectDB技术团队6 天前
ClickHouse 存日志的能力边界:并发、检索与 trace 回放的实测对照
数据结构·数据库·clickhouse·日志分析·apache doris·日志存储
SelectDB技术团队6 天前
Agent Trace 数据底座建设:宽表建模、全文检索与成本聚合的配置与验证步骤
大数据·python·clickhouse·elk·elasticsearch·全文检索·复杂查询
此时不提桶,更待何时6 天前
05-03-B-ClickHouse与OLAP面试与生产事故实战
clickhouse·面试·nosql
SelectDB技术团队7 天前
ELK 太占磁盘、ES 总报写入拒绝:从归因到可执行的优化清单
大数据·clickhouse·elk·elasticsearch·全文检索·复杂查询·实时更新
frjc7 天前
数据库选型:如何从众多数据库中选出最理想的那一个
redis·mysql·clickhouse·elasticsearch
dkgee14 天前
记录一次Clickhouse持续占用CPU超过100%问题分析
clickhouse·hermes