文档
Workload Replay
捕获 profiler workload 快照,针对目标 cluster 重放,然后运行 "what-if" 变更(删除索引、添加假设索引、更改 shard key)以在触及生产前查看影响。
它是什么
4 个 tabs 的 workspace:Capture(从活动 profiler 记录)、Snapshots(管理保存的捕获)、Replay(针对不同 cluster 运行快照)、What-if(应用假设性变更并测量 nReturned、docsExamined、ms 的增量)。Snapshots 持久化在 localStorage 中,以便您可以在数周后重放。
何时使用
在删除 "看起来未使用" 的索引之前 — 用删除的索引重放上周的 workload 并确认没有查询退化。在分片热 collection 之前 — 使用假设性 shard keys 重放并选择最佳分布。在重大重构之前 — 捕获、在 dev 中重构、重放以验证查询仍然工作。
如何打开
- 在 NoSqlStudio 桌面应用中,打开 Tools 菜单 → Workload Replay,或按 Ctrl+Alt+Shift+X。
- workspace tab 打开,带 4 个 tabs:Capture / Snapshots / Replay / What-if。
- 选择 Capture tab 以开始从您的活动 profiler 连接录制。
使用它
- Capture — 选择启用 profiler 的连接。将每个 system.profile 条目记录到快照中。随时停止捕获。
- Snapshots — 已保存捕获列表,带 timestamp、源 cluster 和查询计数。导出为 JSON 以共享。
- Replay — 选择一个快照 + 一个目标连接。engine 针对目标重新执行每个查询并聚合时间增量。使用此功能验证 dev/staging 是否匹配生产行为。
- What-if — 选择快照 + 目标 + 假设性变更(删除索引 X、在 shape Z 上添加索引 Y、切换 shard key)。engine 发出 whatIfReport,带 per-query before/after 指标 — 美化打印且可导出。
限制(v1)
- Capture 仅看到 profiler 捕获的内容 — 在录制前将 profiler 级别设置为 2(所有 ops)以获得完整覆盖。默认级别 1(仅 slow ops)会错过快速查询。
- 针对目标重放 — 确保目标具有相同的数据集形状;否则时间无意义。
- What-if 变更仅在目标上内存中应用 — 它们不持久化。针对同一目标重新运行相同的 what-if 是幂等的。