clickhouse从入门到放弃

最近公司需要使用clickhouse做数据分析,我赶紧从docker上下载一个,学习学习。学习成本不大,会mysql就行。

下载

下载clickhouse包

docker pull yandex/clickhouse-client
docker pull yandex/clickhouse-server

启动clickhouse-server实例

docker run -d --name clickhouse --ulimit nofile=262144:262144 yandex/clickhouse-server

-d 代表后台运行 --name 自定义名称 -p:容器端口映射到当前主机端口 不指定默认http端口是8123,tcp端口是9000

我这里直接用默认的,有需求的话,可以自己加

启动客户端

docker run -it --rm --link clickhouse:clickhouse-server yandex/clickhouse-client --host clickhouse-server

在这里插入图片描述
出来这个就可以体验了。

分区

它强大的点是这个东东
MergeTree的表引擎才支持主键索引,数据分区,数据副本,数据采样这些特性,只有此系列的表引擎才支持ALTER操作

必填项:
1.ENGINE:创建MergeTree的表引擎指定ENGINE = MergeTree()
2.ORDER BY语句:sorting key 排序键,用于指定在一个数据片段内数据以何种标准排序。默认情况下是主键primary key
选填项
PARTITION BY :分区键 用于指定表数据以何种标准进行分区。分区键可以单个列字段,也可以是通过元祖形式使用的多个列字段,还可以支持使用列表达式。(意思是可以组合多个字段进行分区)
若不声明分区键则clickhouse会生成一个名为all的分区。合理使用分区 可以有效减少查询数据文件的扫描范围。

详细了解分区

分区:通过人名分区

create table name_partition(
    uid Int8,
    name String
    grade Int8
)
engine=MergeTree()
order by grade
partition by name;
insert into name_partition values(3,'xiaoming1',80),(5,'xiaoming',10),(1,'xiaohong',90),(7,'fangfang',8),(30,'xiaoming',60),(11,'fangfang',40);

在这里插入图片描述
可以看到表根据名字进行了分区

insert into name_partition values(80,'xiaohong',100),(50,'xiaoming',3);

在这里插入图片描述
将分区合并 optimize table表名

optimize table name_partition

在这里插入图片描述
发现什么了,如果插入的语句设计到分区字段的不同的枚举值的话,每次执行合并只合并一个。

再执行一次就可以了

在这里插入图片描述

基本使用

未完待续~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr.杰瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值