Query cache
- https://clickhouse.com/docs/en/operations/query-cache
- https://clickhouse.com/blog/introduction-to-the-clickhouse-query-cache-and-design
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可用
空间占用
查询占用空间高的列
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