更新时间:2024-12-11 GMT+08:00
ClickHouse分布式表设计
建议
分布式表建表参考:
CREATE TABLE default.my_table_dis ON CLUSTER default_cluster AS mybase.my_table_local ENGINE = Distributed(default_cluster, default, my_table_local, rand());
使用说明
- 分布式表名称:default.my_table_dis。
- 本地表名称:default.my_table_local。
- 通过“AS”关联分布式表和本地表,保证分布式表的字段定义跟本地表一致。
- 分布式表引擎的参数说明:
- default_cluster:集群名称。
- default:本地表所在库名。
- my_table_local:本地表名。
- rand():可选参数,分片键(sharding key),可以是表中一列的原始数据(如did),也可以是函数调用的结果。
规则
不建议写分布式表。
由于分布式表写数据是异步方式,客户端SQL由Balancer路由到一个节点之后,一批写入数据会先落入写入的节点,随后根据分布式表schema定义数据分布规则,将数据异步发送到各个shard的各个副本。整个过程数据异步发送,且数据会在一个节点临时存储,会导致网络、磁盘都会成为瓶颈,且写入成功后不一定能查询到最新一致性数据等问题。
父主题: ClickHouse宽表设计