clickhouse单机安装和导入数据基础实验
clickhouse单机安装和导入数据基础实验
8 下 Clickhouse 安装
1.主机上安装 clickhouse 软件
1.1.检查操作系统是否支持
[root@clickhouse01 ~]# grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" ||
echo "SSE 4.2 not supported"
SSE 4.2 supported
1.2. 添加官方存储库
[root@clickhouse01 ~]# yum install yum-utils
https://repo.clickhouse.tech/rpm/clickhouse.repo
DONE
下载安装 wget
# cd /usr/local/src/
# wget
http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.t
ar.bz2
# cd mwget_0.1.0.orig
# ./configure
# make
# make install
导入数据
按照官方文档,下载一份测试数据,搞起。
执行 shell 脚本,内容如下:
创建表语句为:
SQL 语句需要压缩后再执行。
创建表成功。
输入 exit,退出
在 shell 命令行输入以下命令,向表中导入数据。
for i in *.zip; do echo $i; unzip -cq $i '*.csv' | sed 's/\.00//g' | clickhouse-client --
input_format_skip_unknown_fields=1 --query="INSERT INTO ontime FORMAT CSVWithNames";
done
数据导入成功。
验证数据:
1.查询总记录数:
两亿多数据,执行 0.007 秒。
2.查询平均数:
SELECT avg(c1)
FROM
(
SELECT Year, Month, count(*) AS c1
FROM ontime
GROUP BY Year, Month
);
千万级数据能达到毫秒级输出,可见其查询性能之高。
9. 每年航班延误超过 10 分钟的百分比
10. 每年更受人们喜爱的目的地
SELECT DestCityName, uniqExact(OriginCityName) AS u
FROM ontime
WHERE Year >= 2000 and Year <= 2010
GROUP BY DestCityName
ORDER BY u DESC LIMIT 10;
11. 按年份统计
SELECT
OriginCityName,
DestCityName,
count(*) AS flights,
bar(flights, 0, 20000, 40)
FROM ontime
WHERE Year = 2010
GROUP BY
OriginCityName,
DestCityName
ORDER BY flights DESC
LIMIT 20
13. 最长飞行时间
SELECT
OriginCityName,
DestCityName,
count(*) AS flights,
avg(AirTime) AS duration
FROM ontime
GROUP BY
OriginCityName,
DestCityName
ORDER BY duration DESC
性能测试 clickhouse-benchmark
clikchouse 官方提供了一个 benchmark 工具,能够连接到 ClickHouse 服务器并重复发送指定的查询。
建立一个名为 queries_file 的文件,内容如下两行:
SELECT * FROM system.numbers LIMIT 10000000
SELECT 1
保存文件并退出。并执行命令:
clickhouse-benchmark < queries_file
输出:
基准报告举例:
Queries executed:查询数量
状态字符串包含(按顺序):
clickhouse 服务器的端口
已处理的查询数量
QPS:在--delay 参数指定的时间段内,服务器每秒执行多少查询。
RPS:在--delay 参数指定的时间段内,服务器每秒读取多少行。
MiB/s:在--delay 参数指定的时间段内,服务器每秒读取多少 MB 的数据
result RPS:在--delay 参数指定的时间段内,服务器每秒返回多少行查询结果
result MiB/s:在--delay 参数指定的时间段内,服务器每秒返回多少 MB 的查询结果
查询执行时间的百分比。
当前版本中,
这个并不是 n%的 sql 语句平均运行时间的意思,不然也不会是递增的
这个是说,在所有运行的 sql 语句中,第 n%个 sql 语句的执行时间是多少秒