SuperAPI AI 工具集

altinity-expert-clickhouse-caches

通用与其它

查看项目

更新于 10-15 16:48

技能介绍

用途:回答“缓存大小是否合适、是否真正带来收益”。数据来源包括 system.metrics、system.asynchronous_metrics、system.events、system.parts、system.server_settings 和 system.metric_log。若连接模式、集群和时间窗口未确定,需先运行 altinity-expert-clickhouse-connection。

主要能力(查询包):checks.sql 包含 12 项检查,覆盖 mark 缓存健康度(命中率与内存占比)、未压缩缓存、查询缓存、编译表达式缓存、每表 mark 字节、每表主键内存、随时间变化的缓存事件、当前缓存服务器设置、mark 缓存规模分析、今日查询表的命中率诊断、mark 过多的表、最近一小时逐分钟 mark 缓存命中率。其中 caches-07 依赖 system.asynchronous_metric_log,caches-12 依赖 system.metric_log,缺表时跳过。reference.md 提供背景知识(设置、规模、反模式),仅在需要解释建议时阅读。

使用方式:逐条执行语句,不要整文件运行;语句以 ; 结束,并以 -- @check <id> <title> 开头,保留 id 与结果对应。遵守 -- @requires:表缺失、需要 Keeper/ZooKeeper 而服务器没有、或版本条件不满足时跳过,并列出跳过的 id 及原因。存在集群宏时保留 {cluster} 原样,否则按连接技能的重写规则处理;其他 {placeholder} 需先代入真实值或跳过。出错时记录检查 id 和错误首行后继续;仅对 UNKNOWN_IDENTIFIER 执行 DESCRIBE TABLE system.<table> 并去掉缺失列。severity 列即该行结论,直接照抄,不要重新评级。

判读规则:caches-01/02 返回 hit_severity 与 size_severity 两列。mark 命中率低于 0.7 为 Moderate,低于 0.5 为 Major,低于 0.3 为 Critical;先用 caches-10 区分是缓存过小、跨多表还是冷数据小查询。mark 缓存超过 RAM 的 15% 即使命中率完美也算问题,修复顺序为:提高 caches-11 中表的 index_granularity、让合并减少碎片、删除无用表,最后才降低 mark_cache_size;切勿下调 index_granularity。caches-09 给出目标值:min(磁盘总 marks, RAM 的 15%)。未压缩缓存命中率接近零且未命中多属 Moderate;大小为 0(禁用)是合理选择。caches-08 仅列服务器设置,mark_cache_size 与 uncompressed_cache_size 在其中,查询缓存大小在服务器配置 <query_cache><max_size_in_bytes>,可能不出现。caches-06 主键内存不是缓存且不可驱逐,需与缓存规模分开报告。

报告格式:头部写连接模式、集群或单节点、ClickHouse 版本、时间窗口;发现项表含 check、severity、object、evidence、recommendation,Critical 优先;OK 检查单行列出;跳过和失败检查必须列出,不得省略;给出下一步建议。后续技能:缓存占内存大或接近上限→altinity-expert-clickhouse-memory;命中率差且磁盘读高→altinity-expert-clickhouse-storage;mark 过多→altinity-expert-clickhouse-schema;碎片多→altinity-expert-clickhouse-merges;查询缓存未命中→altinity-expert-clickhouse-reporting。

限制:具体价格、平台支持、版本范围等未在资料中提供;所有操作均为分析建议,不自动修改配置。