Query cache

v23.1 开始支持Query cache, 即可以缓存查询结果,可以选择针对会话启用。

设置项:

  • query_cache_min_query_runs 查询运行过多少次才会启用缓存
  • query_cache_min_query_duration 查询运行时间超过多少才会缓存
  • query_cache_ttl cache 过期时间
  • query_cache_max_entries 往缓存表中存储的缓存结果条数
  • use_query_cache 此查询是否使用缓存
  • enable_reads_from_query_cache 此查询是否先从缓存中读
  • enable_writes_to_query_cache 此查询的结果是否写入缓存

Materialized View

物化视图,看这篇

物化视图(MV)是根据源表的插入,进行聚合,构建新表,可以用来生成更大时间粒度的统计数据

Projection

投影,看这篇

投影相对MV,更自动化一些,查询的语句不需要改动,需要根据查询的语句,创建投影,投影会创建一些隐藏表,然后后续的查询会优先使用投影的数据。

v22.2可用

https://saintbacchus.github.io/2021/07/21/Clickhouse%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB-Projection%E8%B0%83%E7%A0%94/

空间占用

查询占用空间高的列

select table, name, formatReadableSize(sum(data_compressed_bytes)) as compressed, formatReadableSize(sum(data_uncompressed_bytes)) as uncompressed,
  sum(data_compressed_bytes)*100/sum(data_uncompressed_bytes) as compress_ratio 
  from system.columns group by table,name with totals order by sum(data_compressed_bytes) desc;

列要设置适当的类型,如LowCardinality, 对于可能值数量有限的字符串类型,应该使用LowCardinality(String)

性能优化建议

参考: https://www.tinybird.co/clickhouse/knowledge-base/category/performance-tips