如何在Cloudant中定位运行缓慢的查询?
Cloudant慢查询定位方法
1. 提取请求日志筛选慢请求
- 直接从Cloudant服务控制台导出指定时间窗口的请求访问日志,重点筛选
execution_time字段值高于你正常查询耗时阈值的记录 - 慢请求日志会附带完整的查询请求路径、请求方法、请求体片段、调用来源标识,可直接定位到具体的查询语句
2. 用内置诊断工具分析查询逻辑
- 对定位到的可疑慢查询,执行时添加
explain=true参数,示例调用方式:POST /<你的数据库名>/_find?explain=true,返回结果会明确展示查询的执行计划 - 重点查看执行计划中的
totalDocsExamined(扫描文档总数)和resultsReturned(返回结果总数),如果前者远大于后者,说明查询未命中合适的索引,触发了全表扫描 - 同时检查索引匹配字段,如果诊断结果显示使用的是
_all_docs默认索引,说明你没有为该查询创建专属的二级索引
3. 排查特殊场景的耗时诱因
- 确认慢查询是否属于无分页的全量查询、带正则匹配的模糊查询、跨多字段组合过滤但未创建对应复合索引的查询,这类查询本身就会有更高的耗时
- 检查对应数据库的墓碑文档占比,大量未清理的已删除文档会提升查询扫描开销,可通过触发数据库压缩任务清理冗余数据
内容的提问来源于stack exchange,提问作者Daniel Mermelstein
相关产品推荐
相关产品推荐

