客快物流大数据项目(九十):ClickHouse的引擎介绍和深入日志引擎讲解

举报
Lansonli 发表于 2022/12/22 13:53:31 2022/12/22
【摘要】 ClickHouse的引擎介绍和深入日志引擎讲解一、引擎介绍ClickHouse提供了多种不同的表引擎,表引擎可以简单理解为不同类型的表。表引擎(即表的类型)决定了:数据的存储方式和位置,写到哪里以及从哪里读取数据支持哪些查询以及如何支持并发数据访问索引的使用(如果存在)是否可以执行多线程请求数据复制参数下面介绍其中几种,对其他引擎有兴趣的可以去查阅官方文档:https://clickhou...

ClickHouse的引擎介绍和深入日志引擎讲解

一、引擎介绍

ClickHouse提供了多种不同的表引擎,表引擎可以简单理解为不同类型的表。

表引擎(即表的类型)决定了:

  • 数据的存储方式和位置,写到哪里以及从哪里读取数据
  • 支持哪些查询以及如何支持
  • 并发数据访问
  • 索引的使用(如果存在)
  • 是否可以执行多线程请求
  • 数据复制参数

下面介绍其中几种,对其他引擎有兴趣的可以去查阅官方文档:

https://clickhouse.tech/docs/zh/engines/table-engines

二、日志引擎

​​​​​​​1、TinyLog引擎

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

该引擎没有并发控制

  • 如果同时从表中读取和写入数据,则读取操作将抛出异常;
  • 如果同时写入多个查询中的表,则数据将被破坏。

这种表引擎的典型用法是 write-once:首先只写入一次数据,然后根据需要多次读取。此引擎适用于相对较小的表(建议最多1,000,000行)。如果有许多小表,则使用此表引擎是适合的,因为它比需要打开的文件更少。当拥有大量小表时,可能会导致性能低下。不支持索引。

案例:创建一个TinyLog引擎的表并插入一条数据

create table user (id UInt16, name String) ENGINE=TinyLog;
insert into user (id, name) values (1, 'zhangsan');


此时我们到保存数据的目录/var/lib/clickhouse/data/default/user中可以看到如下目录结构:

id.bin 和 name.bin 是压缩过的对应的列的数据,sizes.json 中记录了每个 *.bin 文件的大小:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。