建表
建表语句
bash
CREATE TABLE learning.t_web_hits
(
timestamp DateTime,
user_id UInt64,
url String,
os String,
browser String,
duration_ms UInt32
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(timestamp)
ORDER BY (timestamp, user_id);
用时间做的分区(YYYYMM)

表结构位置
建表完成后在 /var/lib/clickhouse/data 中就能看到 tablename 和 数据存放的具体位置
bash
t_web_hits -> ../../store/dea/dead2f17-de72-4497-8244-4851c975d4db

写入数据
sql
insert into learning.t_web_hits values
(now(),1001,'/page/a','ios','Safair',1500),
(now(),1002,'/page/b','windows','Safair',3000),
(now(),1001,'/page/c','ios','Safair',5000);
查看数据

分区文件
在看看文件夹
powershell
10:25 202605_1_1_0
这个是分区文件

我再插入一条 其他时间段的数据
sql
insert into learning.t_web_hits values
('2027-08-25',1001,'/page/a','ios','Safair',1500);

powershell
202605_1_1_0
202708_2_2_0
可以看到多了一个 202708_2_2_0 的分区
分区合并
再执行一下
sql
insert into learning.t_web_hits values
(now(),1001,'/page/c','ios','Safair',5000);

可以看到多了一个分区 ,而不是在 202605_1_1_0 插入
以后ch会把这2个分区合并
也可以手动做合并
powershell
optimize table learning.t_web_hits;

合并后 多出一个 202605_1_3_1 文件夹
以后clickhouse读取202605的数据就找这个文件夹
后台定期会清除旧的文件夹
