跳转到内容
← 返回 Cosmos DB 概览
Killer #2

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. 1

    连接并正常运行 queries

    通过 NoSqlStudio bridge 的每个 query(Aggregations workspace、Documents tab 等)都会自动捕获。

  2. 2

    打开 Tools → Cosmos DB → Query Cost Inspector

    Tab 打开时已填充当前会话的 queries。按 namespace 或 shape 的部分进行过滤。

  3. 3

    识别 expensive shapes

    按 "Total RU" 列降序排序。前 3-5 个 shapes 通常集中 60-80% 的消耗。聚焦那里。

  4. 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 可配置(下一版本)。

准备好在您的 Cosmos 账户上查看了吗?下载 NoSqlStudio下一个 → Hot Partition Detector