1.ck底层数据目录分布
基于23讲解
数据库本质上就是一个由各种子目录和文件组成的文件目录。clickhouse默认数据目录
在/var/lib/clickhouse/data目录中。所有的数据库都会在该目录中创建一个子文件夹
1.1查看目录
[root@kubeadm-master01 clickhouse]# ll
总用量 8
drwxr-x--- 2 clickhouse clickhouse 116 10月 25 15:20 access
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 cores
drwxr-x--- 5 clickhouse clickhouse 52 10月 30 14:11 data
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 dictionaries_lib
drwxr-x--- 2 clickhouse clickhouse 30 11月 7 12:06 flags
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 format_schemas
drwxr-x--- 2 clickhouse clickhouse 170 11月 9 09:56 metadata
drwxr-x--- 2 clickhouse clickhouse 6 11月 7 12:10 metadata_dropped
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 named_collections
drwxr-x--- 2 clickhouse clickhouse 41 10月 25 15:20 preprocessed_configs
drwxr-xr-x 6 clickhouse clickhouse 156 11月 7 12:01 shadow
-rw-r----- 1 clickhouse clickhouse 58 11月 9 09:45 status
drwxr-x--- 12 clickhouse clickhouse 116 11月 7 12:10 store
drwxr-x--- 2 clickhouse clickhouse 6 11月 9 09:44 tmp
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 user_defined
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 user_files
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 user_scripts
-rw-r----- 1 clickhouse clickhouse 36 10月 25 15:20 [uuid]()
总用量 8
drwxr-x--- 2 clickhouse clickhouse 116 10月 25 15:20 access
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 cores
drwxr-x--- 5 clickhouse clickhouse 52 10月 30 14:11 data
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 dictionaries_lib
drwxr-x--- 2 clickhouse clickhouse 30 11月 7 12:06 flags
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 format_schemas
drwxr-x--- 2 clickhouse clickhouse 170 11月 9 09:56 metadata
drwxr-x--- 2 clickhouse clickhouse 6 11月 7 12:10 metadata_dropped
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 named_collections
drwxr-x--- 2 clickhouse clickhouse 41 10月 25 15:20 preprocessed_configs
drwxr-xr-x 6 clickhouse clickhouse 156 11月 7 12:01 shadow
-rw-r----- 1 clickhouse clickhouse 58 11月 9 09:45 status
drwxr-x--- 12 clickhouse clickhouse 116 11月 7 12:10 store
drwxr-x--- 2 clickhouse clickhouse 6 11月 9 09:44 tmp
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 user_defined
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 user_files
drwxr-x--- 2 clickhouse clickhouse 6 10月 25 15:20 user_scripts
-rw-r----- 1 clickhouse clickhouse 36 10月 25 15:20 [uuid]()
1.介绍
目录 | 作用 |
---|---|
data | 数据存储路径 |
metadata | 数据库元数据路径,该目录下的文件是表结构信息 |
store | 存储表数据 |
access | 访问控制配置文件,对用户、角色、权限的定义,决定了哪些用户能够执行哪些操作 |
cores | 核心数据库引擎的文件和资源 |
dictionaries_lib | 字典机制允许用户将外部数据源(如文件、数据库、HTTP 服务等)作为外部字典引入到 ClickHouse 查询中 |
flags | 与表的元数据和配置有关,常见标志、Merge、Write、Compression |
format_schemas | 用于存储和处理 ClickHouse 表的不同数据格式方案 |
metadata_dropped | 用于存储被删除的表和列的元数据 |
named_collections | 用于存储和管理命名集合类型(如 Array 、Tuple 、Map )的相关功能和数据结构 |
preprocessed_configs | 存放经过预处理的配置文件 |
shadow | 存储查询执行期间的临时数据 |
status(file) | 记录ck进程pid和启动时间以及版本号 |
tmp | |
user_defined | 指定自定义模块路径 |
user_files | 通常用于存储用户上传的文件 |
user_scripts | 存放用户自定义的脚本文件 |
uuid | 全局唯一的标识符 |
metadata_dropped:
主要作用:
- 数据恢复:如果用户不小心删除了表或列,
metadata_dropped
目录提供了一定的恢复可能性,因为这些元数据还没有被永久删除。 - 优化删除操作:直接删除大表或列可能会导致磁盘IO的高峰,而将元数据移入
metadata_dropped
目录,使得系统可以延迟实际的物理删除操作,避免性能问题。 - 追踪历史:通过
metadata_dropped
,可以追踪到曾经存在但已经删除的表和列的历史信息。对于审计和管理操作很有帮助
preprocessed_configs:
1.调试和故障排除:如果在使用过程中遇到配置问题,查看 preprocessed_configs
目录中的文件可以帮助管理员确定哪些配置已经被加载并被应用,这对排查配置错误或不一致性非常有用
shadow:
查询执行期间的数据临时存储:当进行某些操作时,ClickHouse 会将中间结果写入 shadow
目录,保证查询能正确执行。
避免对主表数据的直接修改:操作过程中产生的临时数据不会直接修改原始数据表,这样可以降低数据损坏的风险。
提高查询性能:通过将中间结果存储在 shadow
目录中,ClickHouse 能够避免频繁访问原始数据,提升查询效率。
status:
PID: 1318
Started at: 2024-11-09 09:45:06
Revision: 54481
PID: 1318
Started at: 2024-11-09 09:45:06
Revision: 54481
1.2表文件结构组成
1.创建库
sql
create database test;
create database test;
2.创建表
sql
create table test.t_student
(
id int,
name String,
age int,
`heigth` int
)
engine = TinyLog;
create table test.t_student
(
id int,
name String,
age int,
`heigth` int
)
engine = TinyLog;
字段类型、表引擎区分大小写
3.查看
sql
select * from system.databases where name = 'test' format Vertical;
SELECT *
FROM system.databases
WHERE name = 'test'
FORMAT Vertical
Query id: d2a445db-f2a8-419c-a9fe-82fd18eb076d
Row 1:
──────
name: test
engine: Atomic
data_path: /var/lib/clickhouse/store/
metadata_path: /var/lib/clickhouse/store/24c/24c8503c-8d69-4279-8dba-06894e5a7573/
uuid: 24c8503c-8d69-4279-8dba-06894e5a7573
engine_full: Atomic
comment:
select * from system.databases where name = 'test' format Vertical;
SELECT *
FROM system.databases
WHERE name = 'test'
FORMAT Vertical
Query id: d2a445db-f2a8-419c-a9fe-82fd18eb076d
Row 1:
──────
name: test
engine: Atomic
data_path: /var/lib/clickhouse/store/
metadata_path: /var/lib/clickhouse/store/24c/24c8503c-8d69-4279-8dba-06894e5a7573/
uuid: 24c8503c-8d69-4279-8dba-06894e5a7573
engine_full: Atomic
comment:
data_path
:数据存储路径metadata_path
:数据库元数据路径,该目录下的文件是表结构信息uuid
:uuid 是存储目录的一部分
bash
#进入到数据库目录下
cd /var/lib/clickhouse/data/test
#进入到表目录下
[root@kubeadm-master01 test]# ll
/var/lib/clickhouse/store/af2/af2d1669-0478-4603-afbb-61b28e295a1e/
#查看,这个里面存放了以表结构形式存放数据
[root@kubeadm-master01 t_student]# ll
总用量 20
-rw-r----- 1 clickhouse clickhouse 30 11月 9 11:32 age.bin
-rw-r----- 1 clickhouse clickhouse 30 11月 9 11:32 heigth.bin
-rw-r----- 1 clickhouse clickhouse 30 11月 9 11:32 id.bin
-rw-r----- 1 clickhouse clickhouse 33 11月 9 11:32 name.bin
-rw-r----- 1 clickhouse clickhouse 123 11月 9 11:32 sizes.js
#进入到数据库目录下
cd /var/lib/clickhouse/data/test
#进入到表目录下
[root@kubeadm-master01 test]# ll
/var/lib/clickhouse/store/af2/af2d1669-0478-4603-afbb-61b28e295a1e/
#查看,这个里面存放了以表结构形式存放数据
[root@kubeadm-master01 t_student]# ll
总用量 20
-rw-r----- 1 clickhouse clickhouse 30 11月 9 11:32 age.bin
-rw-r----- 1 clickhouse clickhouse 30 11月 9 11:32 heigth.bin
-rw-r----- 1 clickhouse clickhouse 30 11月 9 11:32 id.bin
-rw-r----- 1 clickhouse clickhouse 33 11月 9 11:32 name.bin
-rw-r----- 1 clickhouse clickhouse 123 11月 9 11:32 sizes.js
💡 说明
.bin 就是各个列存储的数据
sizes.js 存放表的大小