Query Cost Inspector
NoSqlStudio 运行的每个 query 都捕获 RU 成本(x-ms-request-charge header),并堆叠在 500 个 entries 的 ring buffer 中。Workspace 按 shape 分组,显示 total/avg/p95/avg-ms,并将每个 shape 分类为 expensive(>100 RU)、moderate(>20 RU)或 cheap。在几秒内 surface 出流血的 queries。
它在应用中的位置: Tools → Cosmos DB → Query Cost Inspector
它做什么
- 每次运行 find / aggregate / insert / update / delete 时自动捕获 RU + 持续时间。
- 按 query shape 分组(值用占位符替代)— 具有不同值的相同 queries 成为同一行。
- 指标:count、total RU、average、p95、average ms。
- 分类徽章:expensive(>100 RU)、moderate(>20)、cheap。
- 按 ns 或 shape 内联过滤。
- "Clear" 按钮重置会话,以便仅测量特定变更的影响。
分步
- 1
连接并正常运行 queries
通过 NoSqlStudio bridge 的每个 query(Aggregations workspace、Documents tab 等)都会自动捕获。
- 2
打开 Tools → Cosmos DB → Query Cost Inspector
Tab 打开时已填充当前会话的 queries。按 namespace 或 shape 的部分进行过滤。
- 3
识别 expensive shapes
按 "Total RU" 列降序排序。前 3-5 个 shapes 通常集中 60-80% 的消耗。聚焦那里。
- 4
采取行动:创建一个索引、重构,或运行 WHAT-IF
获取 expensive shape → 前往 WHAT-IF Lab → 测试 "add-index" → 在应用前测量 delta。
真实用例
5 分钟内发现 Pareto
DBA 发现 1 个 `find({tenantId, status})` 类型的 query 消耗了每日 RU 的 47%。通过 Killer #8 添加了 composite 索引。RU 立即下降 38%。
在 PR review 中捕获 regression
工程师在 dev 中针对类似生产的数据 review 新 feature 的 PR。Query Cost Inspector 显示新 query 消耗 280 RU vs 类似 queries ~5 RU。阻止了合并。
FAQ
对 NoSqlStudio 之外的 queries 有效吗?
要捕获应用 queries,请配置 diagnostic logs 并使用 Killer #7(KQL templates)— query "Top 20 RU-expensive queries (today)"。
buffer 中可以容纳多少个 queries?
最近的 500 个。通过 prefs 可配置(下一版本)。