clickhouse本地表和分布式表说明(3分片单副本)
环境:
clickhouse:24.8.11.5
1.创建本地表和分布式表
在一个节点上执行即可,我这里配置的分片使用了 default
clickhouse-client --host 192.168.1.102 --port=9000
use db_test
CREATE TABLE tb_test_local ON CLUSTER default
(
id Int32,
name String,
timestamp DateTime DEFAULT now(),
day date DEFAULT now()
)
engine = MergeTree
partition by day
order by id
settings index_granularity = 8192;
CREATE TABLE tb_test_all ON CLUSTER default(
id Int32,
name String,
timestamp DateTime DEFAULT now(),
day date DEFAULT now()
) ENGINE = Distributed(default, db_test, tb_test_local,id);
2.分片规则
分片键sharding_key要求返回一个整形类型的取值,包括Int系列和UInt系列,分片键sharding_key可以使如下几种情况
a.直接指定分片字段,整形字段
ENGINE = Distributed(default, db_test, tb_test_local,id);
B.使用rand()函数
发现不是很均匀
ENGINE = Distributed(default, db_test, tb_test_local,rand());
C.根据整形字段的hash值划分
ENGINE = Distributed(default, db_test, tb_test_local,intHash64(id));
D.hiveHash
ENGINE = Distributed(default, db_test, tb_test_local,hiveHash(id));
3.删除分布上表不会删除本地表
本地表数据也不会删除
4.删除一个分片的本地表,整个分布式表无法使用
5.本地表写入数据分布式表也可以查得到
通过本地表写入
clickhouse-client --host 192.168.1.102 --port=9000
insert into tb_test_local(id,name) values(1,'name1');
insert into tb_test_local(id,name) values(2,'name2');
insert into tb_test_local(id,name) values(3,'name3');
insert into tb_test_local(id,name) values(4,'name4');
insert into tb_test_local(id,name) values(5,'name5');
insert into tb_test_local(id,name) values(6,'name6');
insert into tb_test_local(id,name) values(7,'name7');
insert into tb_test_local(id,name) values(8,'name8');
insert into tb_test_local(id,name) values(9,'name9');
insert into tb_test_local(id,name) values(10,'name10');
6.没有本地表时也可以创建分布式表但是查询错误
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2024-01-22 mongodb账号管理
2024-01-22 使用单机部署为副本集(开启oplog.rs)-4.4.13
2022-01-22 tar加密