一、ClickHouse的介绍
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。是一款实时在线分析数据仓库。性能真的是没的说。
官方网址:Fast Open-Source OLAP DBMS - ClickHouse
优点:
- 磁盘压缩,减少数据占用空间。
- CPU多核并行处理。
- 多服务器分布式处理。
- 向量引擎。
- 适合实时在线查询。
- 支持SQL语句查询。
限制:
- 没有完整的事务支持。
- 缺少高频率,低延迟的修改或删除已存在数据的能力。仅能用于批量删除或修改数据,但这符合 GDPR。
- 稀疏索引使得ClickHouse不适合通过其键检索单行的点查询。
通过限制的1、2两条就可以说明,它只适合数据,不适合业务。想用它来做业务数据的增/删/改是不合适。做数据备份、数据仓库是合适。
二、手动deb方式安装
所以选择此方式,是因为云服务器去apt安装的话,并不是最新版,要低几个版本。如果是docker安装的话,非常简单,一个命令的事情。可以参考官方文档。
- 包下载的地址:
ClickHouse安装包的网址 有很多页,一页一页的翻吧。
下载只需要下载 clickhouse-common-static 和 clickhouse-server ,后成上版本号,不带有其它标识,因为还有debug版,注意适配系统及硬件架构。看名称后缀。server里已经包含了client,所以不需要另行安装。
- 手动安装命令
安装时会设置默认用户的密码,需要提前准备好,记录好。
sudo dpkg -i clickhouse-common-static_24.9.2.42_amd64.deb
sudo dpkg -i clickhouse-server_24.9.2.42_amd64.deb
- 修改配置文件
默认情况下,ClickHouse的配置文件位于 /etc/clickhouse-server/ 目录下。主要的配置文件是 config.xml 和 users.xml。你可以根据需要编辑这些配置文件。
config.xml 要修改数据保存位置,基本上所有/var/lib/clickhouse 都要改掉。其它默认即可。
- 启动服务
sudo service clickhouse-server restart
- 连接数据库
sudo clickhouse-client --password
- 创建新的一个库,安装后会有一个default的数据库。
#创建数据库
CREATE DATABASE test_database;
#使用数据库
use test_datebase;
#使用方式与mysql一样。
三、性能测试
两种测试,数据集使用的官方的<英国房地产支付价格>的数据。总数量2900万多条。
- 第一种物理机
- Intel(R) Xeon(R) Gold 6330 CPU @ 2.00GHz 2个物理CPU,1个28核
- 内存 128G
下面是官方的数据。在本机器测试结果是: Elapsed: 0.033 sec.
查询 3. 最昂贵的社区
注意:需要修改 (date >= '2020-01-01') 以使其与 Projection 定义的维度 (toYear(date) >= 2020) 匹配:
SELECT
town,
district,
count() AS c,
round(avg(price)) AS price,
bar(price, 0, 5000000, 100)
FROM uk_price_paid
WHERE toYear(date) >= 2020
GROUP BY
town,
district
HAVING c >= 100
ORDER BY price DESC
LIMIT 100
同样,结果是相同的,但请注意查询性能的改进:
No projection: 100 rows in set. Elapsed: 0.928 sec. Processed 27.45 million rows, 103.80 MB (29.56 million rows/s., 111.80 MB/s.)
With projection: 100 rows in set. Elapsed: 0.336 sec. Processed 17.32 thousand rows, 1.23 MB (51.61 thousand rows/s., 3.65 MB/s.)
- 云主机,阿里的
- CPU Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz. 2核心
- 内存 16G
在此云主机的测试结果是:Elapsed: 0.103 sec.
以上测试都是 No projection 方式的结果。不知道为什么比官方的高这么多,难道官方测试的服务器配置非常差。没找到官方给出的配置数据。