ClickHouse 日志引擎说明

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: ClickHouse 日志引擎说明

一、表引擎即表的类型

特性:

数据的存储方式和位置,写到哪里以及从哪里读取数据

支持哪些查询以及如何支持

并发数据访问

索引的使用(如果存在)

是否可以执行多线程请求

数据复制参数

1、日志引擎

写入许多小的数据量(少于100万行)的表场景

共性:

       数据存储在磁盘上

       写入时将数据追加在文件末尾

       不支持突变操作

       不支持索引

               select在范围查询时效率不高

       非原子地写入数据

               某些事情破坏了写操作,例如:服务器异常关闭,表会损坏

差异:

       Log和StripeLog引擎支持:

       并发访问数据的锁

                `INSERT` 请求执行过程中表会被锁定,并且其他的读写数据的请求都会等待直到锁定被解除。如果没有写数据的请求,任意数量的读请求都可以并发执行。

         并行读取数据

               在读取数据时,ClickHouse 使用多线程。 每个线程处理不同的数据块。

1)TinyLog

数据存储在磁盘上,每列都存储在单独的压缩文件中,写入时,数据将附加到文件末尾。

并发数据访问不受任何限制:

       如果同时从表中读取并在不同的查询中写入,则读取操作将抛出异常。

如果同时写入多个查询中的表,则数据将会被破坏

特性:适用于一次写入多次读取,不支持索引

适合:小批量处理的中间数据

04038be37d3358bc9cb11be15ffe1da.png

2c8b1506476aebfc04e7f3020ed15b6.png

8df21f9f1beec297aa51667eef60a91.png

a1b86e882291b40b2cefb90b30c1e76.png

2)StripeLog

创建表:[if not exists]  可选项,如果表不存在则创建

create table if not exists ttt (id Int8,name String) engine=StripeLog;

50c37af772fcfc9b1736bec64af9822.png

写数据:

将所有列写在一个文件中,数据追加在表文件的末尾,逐列写入

文件格式:

       data.bin   --数据文件

       index.mrk --带标记文件,存储带有每个数据块每列的偏移量

不支持alter update、alter delete

读数据:

并行读取数据,select返回数据顺序不可知,可以用order by排序

7e84452b405fffe096bcda00d010ff2.png

插入数据:

insert 每次都会在data.bin中创建一个新的数据块

d853870d4dbcc448b78e1ff62c20fe6.png

f06fe1220e9477a0796db8740833976.png

3)Log

适用于临时数据

每列分开存储,可以多个线程读取表中的数据

并发数据访问,可以同时支持读取操作,而写入操作则会堵塞读取和其它写入

不支持索引

8465f1517278436e437aa702168e21a.png

8f772df0f575c00a8281708381b7339.png

b728c6248cbc82d8902620db6021466.png



相关文章
|
5月前
|
存储 SQL 消息中间件
ClickHouse(12)ClickHouse合并树MergeTree家族表引擎之AggregatingMergeTree详细解析
AggregatingMergeTree是ClickHouse的一种表引擎,它优化了MergeTree的合并逻辑,通过将相同主键(排序键)的行聚合为一行并存储聚合函数状态来减少行数。适用于增量数据聚合和物化视图。建表语法中涉及AggregateFunction和SimpleAggregateFunction类型。插入数据需使用带-State-的聚合函数,查询时使用GROUP BY和-Merge-。处理逻辑包括按排序键聚合、在合并分区时计算、以分区为单位聚合等。常用于物化视图配合普通MergeTree使用。查阅更多资料可访问相关链接。
264 4
|
5月前
|
存储 SQL 算法
ClickHouse(13)ClickHouse合并树MergeTree家族表引擎之CollapsingMergeTree详细解析
CollapsingMergeTree是ClickHouse的一种表引擎,它扩展了`MergeTree`,通过折叠行来优化存储和查询效率。当`Sign`列值为1和-1的成对行存在时,该引擎会异步删除除`Sign`外其他字段相同的行,只保留最新状态。建表语法中,`sign`列必须为`Int8`类型,用来标记状态(1)和撤销(-1)。写入时,应确保状态和撤销行的对应关系以保证正确折叠。查询时,可能需要使用聚合函数如`sum(Sign * x)`配合`GROUP BY`来处理折叠后的数据。使用`FINAL`修饰符可强制折叠,但效率较低。系列文章提供了更多关于ClickHouse及其表引擎的详细解析。
178 1
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
42 1
|
1月前
|
存储 分布式计算 NoSQL
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
39 0
|
4月前
|
SQL JSON 数据处理
5% 消耗,6 倍性能:揭秘新一代 iLogtail SPL 日志处理引擎与 Logstash 的 PK
在本文中,我们将深入探讨为何选择 iLogtail,以及它在 SPL 数据处理方面相较于 Logstash 有何独特优势。通过对比这两款工具的架构、性能以及功能,我们希望能够揭示 iLogtail 如何在日益复杂的日志处理需求中脱颖而出,帮助您做出明智的技术选择。
40415 21
|
4月前
|
存储 Prometheus Cloud Native
SLS Prometheus存储问题之为什么SLS时序引擎最终选择了使用C++实现PromQL的部分算子
SLS Prometheus存储问题之为什么SLS时序引擎最终选择了使用C++实现PromQL的部分算子
|
5月前
|
传感器 存储 SQL
ClickHouse(15)ClickHouse合并树MergeTree家族表引擎之GraphiteMergeTree详细解析
GraphiteMergeTree是ClickHouse用于优化Graphite数据存储和汇总的表引擎,适合需要瘦身和高效查询Graphite数据的开发者。它基于MergeTree,减少存储空间并提升查询效率。创建表时需包括Path、Time、Value和Version列。配置涉及pattern、regexp、function和retention,用于指定聚合函数和数据保留规则。文章还提供了建表语句示例和相关资源链接。
86 1
|
5月前
|
缓存 关系型数据库 MySQL
MySQL数据库——InnoDB引擎-架构-内存结构(Buffer Pool、Change Buffer、Adaptive Hash Index、Log Buffer)
MySQL数据库——InnoDB引擎-架构-内存结构(Buffer Pool、Change Buffer、Adaptive Hash Index、Log Buffer)
97 3
|
5月前
|
存储 SQL 关系型数据库
ClickHouse(11)ClickHouse合并树MergeTree家族表引擎之SummingMergeTree详细解析
`SummingMergeTree`是`MergeTree`引擎的变种,它合并相同主键的行并计算数值列的总和,从而节省存储空间和加速查询。通常与`MergeTree`配合使用,存储聚合数据以避免数据丢失。创建`SummingMergeTree`表时,可选参数`columns`指定要汇总的数值列。未指定时,默认汇总所有非主键数值列。注意,聚合可能不完整,查询时需用`SUM`和`GROUP BY`。文章还介绍了建表语法、数据处理规则以及对嵌套数据结构和`AggregateFunction`列的处理。查阅更多ClickHouse相关内容可访问相关链接。
210 5
|
5月前
|
存储 SQL NoSQL
ClickHouse(16)ClickHouse日志表引擎Log详细解析
ClickHouse的Log引擎系列适用于小数据量(<1M行)的表,包括StripeLog、Log和TinyLog。这些引擎将数据存储在磁盘,追加写入,不支持更新和索引,写入非原子可能导致数据损坏。Log和StripeLog支持并发访问和并行读取,Log按列存储,StripeLog将所有数据存于一个文件。TinyLog是最简单的,不支持并行读取和并发访问,每列存储在单独文件中。适用于一次性写入、多次读取的场景。
197 0