# Hot Instance TopSQL Evidence Plan

## Current Design

- `collect_evidence.py` 只采集全局 TiDB / TiKV TopSQL。
- TiKV 全局 TopSQL 使用 `GROUP BY instance, sql_digest ... LIMIT 20`，它只能表示全集群 Top CPU digest，不能保证覆盖已被指标确认的热点 TiKV 实例。
- `detect_hotspot()` 当前会从全局 TiKV TopSQL 推导 “query hotspot on instance”，容易把非热点实例的 SQL 误归因到热点实例。

## Risks

- DataProxy 首次创建 Athena TopSQL view 时可能走冷路径并超过 60s。
- 查询告警后几分钟内，S3 TopSQL 文件仍在持续落入；全局 TopSQL 排名不稳定。
- 如果继续把全局 TopSQL 当作实例级证据，agent 会把 `db-tikv-41` 这类非热点实例的 SQL 错归因到 `db-tikv-79`。

## Target Contract

- 全局 TopSQL 只作为 workload 背景证据。
- CPU / gRPC / thread CPU 选出的热点 TiKV 实例必须补采实例级 TopSQL。
- Query hotspot 归因只能来自实例级 TopSQL，不能来自全局 TopSQL。
- TopSQL SQL 查询允许一次 retry，用于覆盖 Athena view 冷启动超时。

## Implementation Steps

1. 给 SQL 查询封装增加 retry，A4 TopSQL 使用 2 次尝试。
2. 在 Wave 1 指标采集完成后，根据 TiKV CPU 选择热点实例。
3. 对每个热点实例补采 `component='tikv' AND instance LIKE '%<instance>%'` 的 TopSQL。
4. `detect_hotspot()` 改为只使用实例级 TopSQL 判断 query hotspot。
5. agent summary / queries evidence 中明确输出 `TiKV hot instance` TopSQL。

## Verification Checklist

- 单测覆盖：全局 TiKV TopSQL 不触发 query hotspot。
- 单测覆盖：实例级 TopSQL 的 `cpu_pct >= 60%` 触发 query hotspot。
- 单测覆盖：TopSQL retry 在第一次失败、第二次成功时返回成功结果。
- 运行 `backend/tests/test_collect_evidence_tikv_thread_cpu.py`。
