SuperAPI AI 工具集

profiling-statement-fingerprints

数据与分析

查看项目

更新于 10-15 20:21

技能介绍

用途:对 CockroachDB 历史语句性能做分析,基于 crdb_internal.statement_statistics 按时间窗口找出慢、耗资源或易出错的语句指纹,如最慢指纹、高 CPU、争用、准入等待、全表扫描与缺失索引、按应用或库的资源消耗、性能回退或执行计划变化。它是实时排查技能 triaging-live-sql-activity 的补充,后者处理当前运行查询;事务级分析用 profiling-transaction-fingerprints,后台任务用 monitoring-background-jobs。

前提:可连接集群的 SQL;需 VIEWACTIVITY 或 VIEWACTIVITYREDACTED 集群权限;语句统计默认开启,可用 SHOW CLUSTER SETTING sql.stats.automatic_collection.enabled; 检查应为 true。

要点:语句指纹是参数化后的归一化 SQL 模式;aggregated_ts 为每小时 UTC 桶,保留量受 sql.stats.persisted_rows.max(默认 1,000,000)行数上限约束而非 TTL。聚合指标在 statistics.statistics.,采样指标在 statistics.execution_statistics.(受 sql.txn_stats.sample_rate 控制,默认 0.01),使用采样指标前应判断 cnt 是否存在。JSON 取值用 ->、->> 与类型转换;延迟单位为秒,CPU/准入为纳秒(÷1e9),内存/磁盘为字节(÷1048576 得 MB)。

能力:文档给出七类诊断查询与四个工作流,覆盖平均延迟、准入等待、计划哈希多样性、争用占运行时比例、估算总 CPU、内存/磁盘溢写、失败率;并可结合 index_recommendations 与 fullScan 定位优化点。

使用方式:在 SQL 客户端对 statement_statistics 执行只读 SELECT,务必加时间过滤(如 WHERE aggregated_ts > now() - INTERVAL '24 hours')与 LIMIT,默认 24 小时,看趋势可扩到 7 天。

限制与安全:全部为只读查询;大表与 JSON 解析有 CPU 开销;采样指标并非覆盖所有执行;多租户建议用 VIEWACTIVITYREDACTED 脱敏常量;字段名或版本不符会报 column does not exist;结果为空先检查统计采集是否开启。