记录下clickhouse平常用到的几个优化点:
1.数据类型的选择,不要都把每一列都设置成字符串类型,并且对于枚举值很少的字符串类型,可以使用LowCardinality编码,使用整数代替字符串存储
2.字段类型最好不要运行为null,使用特殊默认值来代表null值,因为对于运行为null的列,clickhouse需要额外的文件来存储,影响性能
3.对于Join操作,由于clickhouse采用的Broadcast join的方式,右表会被载入到内存中,所以小表要放在join操作的右边,此外,当两个大表进行Join操作时,建议这时候不要使用clickhouse进行这种大表的Join操作,应该结合Spark等进行优化,利用spark进行join操作,然后把结果再导入clickhouse中供用户实时查询
4.批量写入数据,尽量分批写入数据,并且可以使用Buffer表先把数据进行缓存,不过使用buffer表缓存的缺点是机器重启时数据会丢失,需要权衡