喵星之旅-狂奔的兔子-ClickHouse集群环境使用

登录

1
clickhouse-client -h m02 --port 9001 -u default --password default

其中m02是集群中一个ip,9001 是相应端口,第一个default是账号,第二个default是密码。

查询集群信息

1
2
select * from system.clusters;

创建数据库

1
2
3
4
5
6
# 本地库
create database kitty8

# 集群库 其中bip_ck_cluster是集群名,和集群信息第一列值一样
create database kitty9 on cluster 'bip_ck_cluster'

创建表

分布式表

分布式表本身不存储数据,它只是将查询请求分发到集群中的各个节点上,并从这些节点上获取结果。因此,在创建分布式表之前,您需要确保集群中的每个节点都已经创建了相应的本地表,并且这些本地表的结构与分布式表一致。

在ClickHouse中实现分布式建表,通常需要使用ENGINE = Distributed引擎,并指定集群名称和本地表名称。以下是一个基本的分布式建表语句示例:

1
2
3
4
5
6
7
8
CREATE TABLE distributed_table ON CLUSTER 'your_cluster_name'
(
id UInt32,
name String,
age UInt8
)
ENGINE = Distributed('your_cluster_name', 'database_name', 'local_table_name', sharding_key);

在这个语句中:

ON CLUSTER ‘your_cluster_name’:指定要在哪个集群上创建分布式表。

ENGINE = Distributed:指定使用Distributed引擎。

‘your_cluster_name’:集群的名称,必须与ClickHouse配置中的集群名称一致。

‘database_name’:本地表所在的数据库名称。

‘local_table_name’:本地表的名称,即数据实际存储的表的名称。

sharding_key:分片键,用于决定数据应该存储在哪个节点的本地表上。可以是表中的一列或多列。

集群上创建表

可以利用ON CLUSTER语句实现。以下是一个具体的示例,展示了如何在名为my_cluster的集群上创建一个表my_distributed_table

1
2
3
4
5
6
7
8
9
CREATE TABLE my_distributed_table ON CLUSTER 'my_cluster'
(
id UInt32,
name String,
value Float32
)
ENGINE = MergeTree()
ORDER BY id;

在这个示例中:

my_distributed_table:这是您希望创建的表的名称。

ON CLUSTER ‘my_cluster’:这个语句指明了您想在my_cluster这个集群的所有节点上都创建这个表。

表结构定义部分包括了三列:id(无符号32位整数)、name(字符串)和value(32位浮点数)。

ENGINE = MergeTree():选择了MergeTree作为表的存储引擎,这是ClickHouse中一种高效且常用的存储引擎。

ORDER BY id:指定了表的主键,ClickHouse会根据这个主键对数据进行排序。

当您在集群上执行这条建表语句时,ClickHouse会在集群的每个节点上都创建一个名为my_distributed_table的表,并且这些表的结构和定义都是相同的。这样,您就可以在集群上对这个表进行分布式查询和操作了。

请确保my_cluster这个集群已经在ClickHouse的配置中被正确定义,且集群中的各个节点都是可用的。否则,建表操作可能会失败。

普通表

基本的ClickHouse建表语句示例

1
2
3
4
5
6
7
8
9
10
CREATE TABLE my_table
(
id UInt32,
name String,
age UInt8,
created_at DateTime
)
ENGINE = MergeTree()
ORDER BY id;

在这个示例中:

my_table 是表的名称,您可以根据自己的需求进行命名。

表中有四列:id(无符号32位整数)、name(字符串类型)、age(无符号8位整数)和created_at(日期时间类型)。

ENGINE = MergeTree() 指定了使用MergeTree引擎,这是ClickHouse中最常用的存储引擎之一,适用于大多数场景。

ORDER BY id 指定了表的主键和排序键,ClickHouse会根据这个键对数据进行排序和存储。

如果想要创建一个带有分区的表,可以使用类似以下的语句:

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE my_partitioned_table
(
id UInt32,
name String,
age UInt8,
created_at DateTime
)
ENGINE = MergeTree()
PARTITION BY toYYYYMMDD(created_at)
ORDER BY id;

在这个示例中,PARTITION BY toYYYYMMDD(created_at) 指定了按照created_at字段的年月日进行分区。这样,ClickHouse可以根据分区来优化查询性能,提高数据访问速度。

插入数据

可以是分布式或者本地表

1
2
3
insert into my_clustertable( id,name,age)   values (1,'tom',11);

insert into distributed_table( id,name,age) values (3,'tom3',113),(4,'tom4',114),(5,'tom5',115),(6,'tom6',116);

删除数据

1
alter table my_clustertable delete where 1=1;
文章目录
  1. 登录
  2. 查询集群信息
  3. 创建数据库
  4. 创建表
    1. 分布式表
    2. 集群上创建表
    3. 普通表
  5. 插入数据
  6. 删除数据
|