ClickHouse¶
在这篇文章中
信息
ClickHouse 是一个高性能的列式数据库管理系统 (DBMS),专为执行 OLAP 类分析查询而设计。该 DBMS 专注于以低延迟分析海量数据,广泛应用于分析、监控、日志和遥测处理任务。
ClickHouse 核心功能¶
- 列式存储:数据按列而非按行存储,这显著加快了分析查询的执行速度并减少了处理的数据量。
- 高性能:针对处理大规模数据集进行了优化,得益于向量化处理和高效的 CPU 利用率,能够执行数十亿行数据的查询。
- 数据压缩:采用专门的压缩算法,可以大幅减少存储数据量(通常比基于行的 DBMS 小数倍),尤其是在分析工作负载下。
- SQL 兼容性:支持带有额外分析函数的扩展 SQL 语法,简化了现有应用程序的迁移。
- 分布式处理:支持创建集群以实现水平扩展和跨多服务器的数据处理。
- 数据复制:内置的复制 (Replication) 支持确保了容错能力和高数据可用性。
- 支持多种数据格式:可以导入和导出 CSV、JSON、Parquet、Avro 等格式的数据。
- 物化视图 (Materialized views):在后台自动聚合数据,以加速重复查询。
- 与外部数据源集成:支持直接从 MySQL、PostgreSQL、MongoDB、Kafka、S3 等系统读取数据。
部署功能¶
| ID | 软件名称 | 兼容操作系统 | 虚拟机 | 物理机 | vGPU | GPU | 最低CPU(核) | 最低内存(GB) | 最低硬盘(GB) | 自定义域名 | 是否启用 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 492 | ClickHouse | Ubuntu 24.04, Ubuntu 22.04 | + | + | + | + | 4 | 8 | 120 | 否 | 订购 |
有关此软件部署功能的详细信息,请参阅 此链接
备注
端口 8443 和 9100 默认禁用,需要在 /etc/clickhouse-server/config.xml 中进行额外配置。
备注
除非另有说明,否则我们从官方开发人员网站安装软件的最新发布版本。
部署 ClickHouse 后的入门指南¶
在支付订单后,系统会向您注册时指定的电子邮件发送通知,告知服务器已准备就绪。邮件中将包含 VPS 的 IP 地址以及连接所需的登录名和密码。我们的客户可以通过服务器的硬件管理和 API 控制面板 - Invapi 来管理硬件。
授权详情:
- Server IP address:在电子邮件和控制面板中提供;
- Login:
default; - Password:与
root账户的密码一致,并发送至您的电子邮箱。
警告
对于 GUI 客户端(如 DBeaver、DataGrip 等),请使用 port 8123 (HTTP 接口)。端口 9000 仅保留给原生的 clickhouse-client 使用。
连接到 ClickHouse¶
连接方法
本节介绍了通过 clickhouse-client(命令行客户端)和 DBeaver(图形界面)连接到 ClickHouse 最常用的方法。ClickHouse 还支持通过其他客户端进行连接:DataGrip、Tableau、MySQL Workbench(通过端口 9004)、pgAdmin(通过端口 9005),以及 Python、Go、Java 等语言的编程库。
通过 clickhouse-client 连接¶
ClickHouse 内置了一个用于数据库操作的原生命令行客户端。
1. 从服务器本地连接:
2. 从远程机器连接:
3. 执行简单查询:
4. 查看数据库列表:
通过 DBeaver 连接¶
DBeaver 是一个通用的 GUI 客户端,可用于处理包括 ClickHouse 在内的各种数据库。
1. 安装 DBeaver
从 官方网站 下载并安装 DBeaver。
2. 创建新连接 (New Database Connection)
- 启动 DBeaver
- 选择 Database >> New Database Connection (或按
Ctrl+Shift+N)

- 在数据库列表中找到并选择 ClickHouse

- 点击
Next
3. 配置连接参数
在设置窗口中指定以下参数:
Host: <您服务器的 IP 地址>
Port: 8123
Database/Schema: (留空或指定默认值)
Username: default
Password: <root_password>

至关重要
对于 DBeaver 连接,请使用 port 8123。
4. 下载 JDBC 驱动程序
首次连接时,DBeaver 会提示您下载 ClickHouse 的 JDBC 驱动程序:
- 在弹出窗口中点击
Download:

- 等待驱动程序下载完成:

- 点击
OK
6. 测试连接 (Test Connection)
- 点击
Test Connection; - 如果配置正确,将显示消息:Connected (XXX ms):

- 该消息将包含:
- Server: ClickHouse X.X.X.XXX
- Driver: ClickHouse JDBC Driver X.X.X
6. 完成设置
- 点击
Finish; - 连接将出现在 Database Navigator 中;
- 展开连接树以查看数据库、表和其他对象。

常见问题:
| Error | 原因 | 解决方法 |
|---|---|---|
transport error: 400 | 使用了端口 9000 而非 8123 | 更改为端口 8123 |
Connection refused | IP 错误或防火墙拦截了端口 | 验证 IP 地址和防火墙规则 |
Authentication failed | 登录名或密码错误 | 验证凭据 |
Hostname is not specified | 在未配置的情况下意外启用了 SSH 隧道 | 在连接设置中关闭 SSH 选项卡 |
ClickHouse 核心操作¶
创建数据库¶
创建表¶
CREATE TABLE my_database.events
(
event_date Date,
event_time DateTime,
user_id UInt32,
event_type String,
value Float64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, user_id);
插入数据¶
INSERT INTO my_database.events VALUES
('2024-12-25', '2024-12-25 10:00:00', 1, 'click', 1.5),
('2024-12-25', '2024-12-25 10:05:00', 2, 'view', 2.3),
('2024-12-25', '2024-12-25 10:10:00', 1, 'purchase', 99.99);
查询数据¶
简单查询:
聚合数据:
SELECT
event_type,
count() as events_count,
avg(value) as avg_value
FROM my_database.events
WHERE event_date = '2024-12-25'
GROUP BY event_type;
时间序列:
SELECT
toStartOfHour(event_time) as hour,
count() as events_per_hour
FROM my_database.events
WHERE event_date >= '2024-12-01'
GROUP BY hour
ORDER BY hour;
从 CSV 导入数据¶
创建表:
CREATE TABLE my_database.logs
(
timestamp DateTime,
level String,
message String
)
ENGINE = MergeTree()
ORDER BY timestamp;
导入数据:
管理用户和权限¶
创建用户:
授予权限:
查看用户:
查看权限:
管理服务¶
启动服务:
停止服务:
重启服务:
查看服务状态:
查看日志:
备注
如果您不是以 root 用户身份操作,请在命令前加上 sudo:sudo clickhouse start
检查活动端口¶
查看 ClickHouse 正在监听哪些端口:
或者更详细地查看:
在配置中检查已配置的端口:
检查特定端口:
预期的端口检查输出:
LISTEN *:8123 clickhouse-serv (HTTP)
LISTEN *:9000 clickhouse-serv (Native TCP)
LISTEN *:9004 clickhouse-serv (MySQL)
LISTEN *:9005 clickhouse-serv (PostgreSQL)
LISTEN *:9009 clickhouse-serv (Interserver)
备注
有关 ClickHouse 配置和优化的详细信息,请参阅 官方开发人员文档。
订购带有 ClickHouse 的服务器¶
要使用 API 安装此软件,请遵循 这些说明。