clickhouse21.7.11.3 逻辑目录和数据存储目录分开存放,TinyLog列式存储结构

说明

通过建表,理解以下知识点:

  • 逻辑目录和数据存储目录 是分开存放
  • TinyLog存储结构

操作

建库

create database test

建表

create table test.t_student
(
    id int,
    name String,
    age int,
    `heigth` int
)
engine = TinyLog

注意: 字段类型、表引擎区分大小写

插入数据

insert into test.t_student values (1,'李雷',20,182)

查看

查看数据库信息

select * from system.databases where name = 'test' format Vertical;

执行结果如下:

Row 1:
──────
name:          atom
engine:        Atomic
data_path:     /var/lib/clickhouse/store/
metadata_path: /program/clickhouse/data/store/25f/25f02c4c-0a9a-453e-a5f0-2c4c0a9a253e/
uuid:          25f02c4c-0a9a-453e-a5f0-2c4c0a9a253e

可以查看到:

  • data_path:数据存储路径
  • metadata_path:数据库元数据路径,该目录下的文件是表结构信息
  • uuid:uuid 是存储目录的一部分

数据库 metadata 逻辑目录 和 存储目录

数据库 metadata 是保存表结构信息的目录

逻辑根目录是 /program/clickhouse/data/metadata/

提示:默认是 /var/lib/clickhouse/metadata

该目录下,数据库名目录 是 软链接,指向实际的 存储目录 /program/clickhouse/data/store/库uuid前缀/库uuid,也就是上面的 metadata_path

执行下面命令:

cd test
ll

可以看到下面 表名.sql 文件:

t_student.sql

该文件是 表结构信息

数据逻辑目录 和 存储目录

数据 逻辑根目录 是 /program/clickhouse/data/data/

提示:默认是 /var/lib/clickhouse/data

该目录下是 数据库名字的目录

在 /program/clickhouse/data/data/test/ 目录下,可以看到 t_student 软连接,指向实际的 存储目录,/program/clickhouse/data/store/表 uuid 前缀/表 uuid

提示:默认是 /var/lib/clickhouse/store/表 uuid 前缀/表 uuid

总结

metadata 的根目录是 /program/clickhouse/data/metadata/、数据库根目录是 /program/clickhouse/data/data/,这些都是 逻辑目录

其下的文件是软链接,链接的位置是:/program/clickhouse/data/store 目录

这就是 逻辑目录和数据存储目录 是分开存放

TinyLog列式存储结构

执行下面命令:

cd /program/clickhouse/data/store/1df/1dfba34c-c512-407e-9dfb-a34cc512607e/

可以看到下面文件:

age.bin
heigth.bin
id.bin
name.bin
sizes.json

其中:.bin 就是各个列存储的数据,一个文件存储一列,按照 列 统计时,只读取该文件即可,所以 列式存储 适合 OLAP

感谢:
https://www.jianshu.com/p/0b191142f183


原文出处:/show_1IX3Oa2ageEp.html