ClickHouse 日志引擎说明

一、表引擎即表的类型

特性:

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

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

并发数据访问

索引的使用(如果存在)

是否可以执行多线程请求

数据复制参数

1、日志引擎

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

共性:

        数据存储在磁盘上

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

        不支持突变操作

        不支持索引

                select在范围查询时效率不高

        非原子地写入数据

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

差异:

        Log和StripeLog引擎支持:

        并发访问数据的锁

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

          并行读取数据

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

1)TinyLog

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

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

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

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

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

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

2)StripeLog 

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

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

写数据:

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

文件格式:

        data.bin   --数据文件

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

不支持alter update、alter delete

读数据:

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

插入数据:

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

3)Log

适用于临时数据

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

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

不支持索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

80后大叔爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值