咨询Azure Cosmos MongoDB无服务器环境缺失索引检测工具
Azure Cosmos DB MongoDB API 缺失索引识别方案
针对你在Azure Cosmos DB MongoDB无服务器部署中遇到的RPS异常、RU消耗过高问题,以下是无需逐一排查应用查询即可识别缺失索引的实用方案:
1. 利用Azure Cosmos DB内置索引顾问(Index Advisor)
这是最直接的官方工具,对标SQL Server First Responder Kit的索引识别能力:
- 登录Azure门户,进入你的Cosmos DB账户,在左侧导航栏找到索引顾问(Index Advisor);
- 工具会自动分析过去7天的查询负载,识别出导致全表扫描(COLLSCAN)的查询,并给出具体的缺失索引建议;
- 你可以直接在门户中一键创建推荐的索引,无需手动编写索引语句。
2. 通过查询运行时分析定位无索引查询
使用MongoDB兼容的命令找出正在执行的全表扫描查询:
- 执行命令:
db.currentOp({ "query": { "$exists": true }, "planSummary": "COLLSCAN" }) - 该命令会返回所有正在执行全表扫描的查询,这类查询通常是RU消耗过高、RPS异常的主要原因,针对这些查询的过滤条件创建索引即可优化。
3. 分析Cosmos DB查询日志
将Cosmos DB的查询日志导出到Log Analytics后,可通过Kusto查询批量分析无索引查询:
- 示例Kusto查询:
AzureDiagnostics | where ResourceType == "COSMOSDB" and OperationName == "QueryExecute" | where tostring(Properties["planSummary"]) contains "COLLSCAN" | summarize count() by tostring(Properties["queryText"]) | order by count_ desc - 该查询会统计所有执行全表扫描的查询及其出现次数,按频率排序后优先处理高频查询的索引优化。
4. 社区工具辅助(需注意Cosmos兼容性)
部分MongoDB社区工具可兼容Cosmos DB MongoDB API,比如:
- Percona Toolkit的pt-mongodb-query-digest:可分析查询日志,识别慢查询和无索引查询;
- MongoDB Compass:连接Cosmos DB后,通过“Explain Plan”功能查看单个查询的执行计划,判断是否使用索引,也可通过“Performance”面板查看查询性能瓶颈。
内容的提问来源于stack exchange,提问作者Justin williams
相关产品推荐
相关产品推荐

