环境搭建
下载安装包
根据不同发行版Linux,从官方下载地址下载合适的安装包
安装顺序
bash
1 | rpm -ivh clickhouse-common-static-20.3.11.97-1.el7.x86_64.rpm |
创建目录
路径随便选,IT给的服务器基本上磁盘都分给了/home,我就习惯安装在/home下
bash
1 | mkdir -p /home/app/clickhouse/log |
修改启动脚本
进入vim /etc/init.d/clickhouse-server
修改以下参数
bash
1 | CLICKHOUSE_LOGDIR=/home/app/clickhouse/log |
修改配置文件
进入vim /etc/clickhouse-server/config.xml
修改一下路径
Code
1 |
|
启动和验证ClickHouse服务
bash
1 | # 启动clickhouse服务 |
添加开机自启动
服务器一般不会关,不用考虑此选项
Code
1 | chkconfig clickhouse-server on |
基本操作
建表
基本语法
sql1
2
3
4
5
6CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [compression_codec] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [compression_codec] [TTL expr2],
...
) ENGINE = engine;示例1:创建了一张内存表,包含字段id和name,这里使用了Memory引擎。Memory引擎是ClickHouse最简单的表引擎,数据只会被保存在内存中,在服务重启时数据会丢失
sql1
2
3
4CREATE TABLE table_test(
id Int32,
name String
) ENGINE=Memory;示例2:创建一个名为table_test的表,包含String类型的字段uid和md5hash(固定长度为32字节)
sql1
2
3
4
5
6
7
8CREATE TABLE table_test
(
uid String,
md5hash FixedString(32)
)
ENGINE = MergeTree
ORDER BY md5hash
SETTINGS index_granularity = 8192;Clickhouse支持多种不同的引擎,表引擎决定了数据表的特性,也决定了数据将会被如何存储及加载。以适用于不同数据量场景下的开发,具体可以参考此文;工作中我处理的数据量较大,因此示例选用了支持插入索引的表引擎MergeTree。关于稀疏索引的参数值8192的含义,可以参考此文
入库
普通插入
sql1
2
3
4
5INSERT INTO table_test VALUES
(
'test',
'098F6BCD4621D373CADE4E832627B4F6'
);插入csv文件中的数据(csv文件中的数据要按照建表时字段的顺序排列)
bash1
cat $f | clickhouse-client --query "INSERT INTO table_test VALUES FORMAT CSV"
查询
常规语法
sql1
2
3
4SELECT *
FROM table_test
WHERE md5hash
IN ('098F6BCD4621D373CADE4E832627B4F6');括号内查询的值可以有多个(测试同时容纳1000个没问题,且查询速度足够快),需用逗号隔开
SHOW操作
以下是一些SHOW指令实现的操作,可用于查看不同信息
sql
1 | -- 查看建表信息 |