ClickHouse是一个高性能的列式数据库管理系统,适用于在线分析处理(OLAP)。以下是ClickHouse的一些基本使用步骤:
- 下载二进制文件:您可以通过运行以下curl命令在Linux、FreeBSD或macOS上本地下载ClickHouse:
curl https://clickhouse.com/ | sh
此安装方式也是目前官方推荐的安装方式,执行完后,会下载二进制文件
- 安装应用:按照上一步输出的命令提示执行
./clickhouse install
中间会提示输入数据库密码,输入后回车
看到这个就是安装成功了
- 启动服务器:运行以下命令来启动ClickHouse服务器:
clickhouse start
- 启动客户端:使用
clickhouse-client
连接到您的ClickHouse服务。打开一个新的终端,切换到保存clickhouse
二进制文件的目录,然后运行以下命令:
clickhouse-client --password xxx
Warnings:
- Delay accounting is not enabled, OSIOWaitMicroseconds will not be gathered. You can enable it using
echo 1 > /proc/sys/kernel/task_delayacct
or by using sysctl. - Maximum number of threads is lower than 30000. There could be problems with handling a lot of simultaneous queries.
一般不用管它,当然也可以调怎一下:
- 延迟计算未启用:这意味着OSIOWaitMicroseconds(操作系统输入/输出等待时间的微秒数)将无法收集。要解决这个问题,您可以通过以下命令启用延迟计算:
echo 1 > /proc/sys/kernel/task_delayacct
- 线程数低于30000:这个警告表明,当前设置的线程数可能不足以处理大量的同时查询。您可以通过修改ClickHouse的配置文件来增加线程数。在
/etc/clickhouse-server/config.xml
文件中找到max_threads
设置,并根据您的服务器性能和负载情况进行调整。如:
<yandex>
...
<max_threads>30000</max_threads>
...
</yandex>
调整后,重启ClickHouse服务
- 创建表:使用
CREATE TABLE
定义一个新表。ClickHouse中的典型SQL DDL命令工作正常,但需要添加一个ENGINE
子句。使用MergeTree
可以利用ClickHouse的性能优势:
CREATE TABLE my_table (
user_id UInt32,
message String,
timestamp DateTime
) ENGINE = MergeTree PRIMARY KEY (user_id, timestamp)
- 插入数据:您可以使用熟悉的
INSERT INTO TABLE
命令与ClickHouse一起使用,但重要的是要理解,每次插入到MergeTree
表都会在存储中创建一个部分(文件夹)。为了最小化部分,一次性批量插入大量行(成千上万甚至数百万):
INSERT INTO my_table (user_id, message, timestamp)
VALUES
(101, 'Hello, ClickHouse!', now()),
(102, 'Insert a lot of rows per batch', yesterday()),
(102, 'Sort your data based on your commonly-used queries', today()),
(101, 'Granules are the smallest chunks of data read', now() + 5)
- 查询新表:您可以像使用任何SQL数据库一样编写SELECT查询:
SELECT * FROM my_table ORDER BY timestamp
ClickHouse图形客户端
上面我们使用的是命令行客户端连接clickhouse,当然也是有图形客户端可以使用的,我们来看看DBeaver,基本上和MySQL一样。