RICH-ATONE

clickhouse分区设计操作以及优化

clickhouse分区的作用;

分区会不会提高查询速度也要看查询条件里面带什么。如果查询条件就是分区的等值操作,那优化器在生成查询操作的时候肯定能够做到partition elimination,扫描的io块少了查询速度肯定也能提高。
如果查询条件里面没有分区等值查询条件,那么再怎么分区,都是扫描所有parts,这种情况下,分区不会提高查询速度。
分区能在适合的情况下减少数据扫描范围, 但分区多了,会导致磁盘文件数量的增加,而且一个select需要查询上百个parts的话,线程的切换也是有代价的。对于SSD还好说,iops比较高。机械盘的话,parts太多,碎片文件多的话,磁盘io吞吐量就上不去了。

分区优化:

       1)分区粒度根据业务特点决定,不宜过粗或过细。一般选择按天分区,也可以指定为Tuple(),以单表一亿数据为例,分区大小控制在10-30个为最佳。
  2)那些有相同分区表达式值的数据片段才会合并。这意味着 你不应该用太精细的分区方案(超过一千个分区)。否则,会因为文件系统中的文件数量过多和需要打开的文件描述符过多,导致 SELECT 查询效率不佳。
  3)还有就是一般我们都是使用的是日期作为分区键,同一分区内有序,不同分区不能保证有序。

参考:

https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/custom-partitioning-key/
clickhouse分区设计操作以及优化
数据库相关的记录文档(卸载与装载分区

posted on 2022-09-09 14:30  RICH-ATONE  阅读(2140)  评论(0编辑  收藏  举报

导航