[大数据学习之ClickHouse]10-ClickHouse高级进阶之表级别优化

本篇文章主要聊一下CLK中的表级别优化操作

  1. 时间字段的类型
    CLK与HIVE两者虽然都是用天来进行分区规则,但是不同的点就是,HIVE的日期字段是STRING,CLK的官方建议是时间戳字段直接使用DATATIME或者是Long类型的(INT32)
    如果使用STRING也不是不可以,CLK底层也会将STRING给转化成LONG(INT32)去存储,或多或少会影响点性能
create table t_type2(
 id UInt32, 
 sku_id String, 
 total_amount Decimal(16,2) ,  
 create_time Int32
 ) 
 engine =ReplacingMergeTree(create_time) 
 partition by toYYYYMMDD(toDate(create_time)) 
 primary key (id) order by (id, sku_id);
 
 
 
 create table t_type2(
 id UInt32, 
 sku_id String, 
 total_amount Decimal(16,2) ,  
 create_time DataTime
 ) 
 engine =ReplacingMergeTree(create_time) 
 partition by toYYYYMMDD(create_time) 
 primary key (id) order by (id, sku_id);

  1. 空值

空值无论是在HIVE还是CLK中都是应该避免的,在CLK中,空值列无法被索引,并且空值还会在CLK的底层多一个小文件出来,除非特殊情况,空值都应该指定一个业务上不使用的默认值来避免这种情况的出现

官网说明:https://clickhouse.tech/docs/zh/sql-reference/data-types/nullable/

3 . 分区/索引
分区一般按天进行分区
CLK中必须指定索引列,索引列就是排序列,也就是ORDER BY中的字段
组合索引遵循查询频率大的在前的原则,基数特别大的(查询很频繁,数据量还很大)不建议作为索引列

4 . TTL
合理的使用针对表的TTL功能,可以很大程度上的减少磁盘存储空间

5 . 写入/删除操作
尽量避免小批量的删除和插入,会产生过多的小分区文件

不要一次写入过多个分区,最好针对一个分区进行操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值