栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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

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

    时间字段的类型
    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);

    空值

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

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

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

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

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745365.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号