说明
通过建表,理解以下知识点:
- 逻辑目录和数据存储目录 是分开存放
- 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