clickHouse本地表设计

本地表建表参考: CREATE TABLE default.my_table_local ON CLUSTER default_cluster ( `a` Int32, `b` Int32, `c` Int32, `d` Date ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default/my_table_local', '{replica}') PARTITION BY toYYYYMMDD(d) PRIMARY KEY(b) ORDER BY (b, c) SETTINGS index_granularity = 8192;

– 表引擎选择: ReplicatedMergeTree:支持副本特性的MergeTree引擎,也是我们最常用的 表引擎,其他表引擎参考使用场景介绍进行选择。

– ZooKeeper上的表元数据信息存储路径“/clickhouse/tables/{shard}/default/ my_table_local”: {cluster}表示集群名称,{shard}是分片名称,{replica}是分片中的副本编 号,这几个宏变量直接写即可,建表时不需要替换为常量值。 default:表示创建的表名放到哪个数据库下面,在创建表时需要根据实际情 况进行替换。

– on cluster:创建的集群 建表会创建到集群中所有节点上,否则需要自己手动一个个节点去创建,一 个个节点创建过程比较繁琐,创建比较慢;如果在集群中部分节点未创建 表,在查询时会遇到无表信息的错误提示。

– no delay:立刻生效 在删除表或修改表语法中加上no delay,表示立即删除,否则会等8分钟以后 进行删除,如果未加no delay语法,删除表后需要立即创建同名的表名可能 会遇到错误,创建不成功。(例如

DROP TABLE default.my_table ON CLUSTER default_cluster NO delay; #删除表

ALTER TABLE default.my_table drop partition 20240219 ON CLUSTER default_cluster NO delay; #删除分区)

– order by:排序字段 查询时最常使用且过滤性最高的字段作为排序字段。依次按照访问频度从高 到低、维度基数从小到大来排。排序字段不宜太多,建议不超过4个,否则 merge的压力会较大。排序字段不允许为null,如果存在null值,需要做数据 转换。

– primary key:主键字段 创建主键索引,值为排序字段的前导列,否则不允许创建表,为访问频率最 高的字段创建索引,提升查询性能,查询时会通过索引数据快速的找到数据 文件中的数据块所在位置信息。

– partition by:分区字段 分区键不允许为null,如果字段中有null值,需要做数据转换处理。

– 表级别的参数配置: index_granularity:稀疏索引粒度配置,默认是8192,一般不需要修改。(实践建议:ClickHouse的主键索引采用的是稀疏索引存储,稀疏索引的默认采样粒度是8192 行,即每8192行取一条记录在索引文件中,然而 索引粒度越小,对于小范围的查询更有效,避免查询资源的浪费; 索引粒度越大,则索引文件越小,索引文件的处理会更快; 所以 超过10亿的表索引粒度可设为16384,其他设为8192或者更小值。)

建议以10亿为基本单位,10亿 * N (数据量)=8192*N(稀疏索引值)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值