clickhouse-sql规范(后续持续更新)

408 阅读1分钟
  1. order by 字段默认是主键,没必要的字段不要加,不要加创建时间,业务方的数据不可控,会影响clickhouse里的数据维度
  2. siphash(业务单号),使用final去重查询,尽量不要用argMax
  3. 视情况大表按天分区,小表按月分区
  4. 可变值字段不能添加二级索引,按此字段做条件查询会先走索引在合并数据,查出而外的中间态数据。
  5. 增加二级索引只对后续新增数据生效,如需对历史数据也走索引,需要按分区刷新数据
  6. 云clickhouse成本高,如果对预算低,dev/test环境可以自己搭建clickhouse集群。
  7. 分布式表数据分片一定要均匀,反例:仓数据以仓库编号分片,网格站按网格站编号分片,所以一个仓/网格站的数据都落到一个节点上,到时按仓/网格站查询时无法充分利用集群的计算资源,只是使用了某个节点的计算能力。如果某仓/网格站请求偏多会导致某个节点CPU飙升,查询很慢。建议可以按照order by字段hash分片。
  8. clickhouse cpu很重要,8C与16C差异很大
  9. clickhouse Nullable影响查询性能,占用额外存储空间
  10. 值不变得字段必须使用prewhere特性提升查询性能
  11. 不允许使用select *
  12. WHERE和GROUP BY中的列顺序,要和建表语句中order by的列顺序统一。
  13. 历史数据不再变化的指标可以考虑做缓存