文档数据库服务 DDS-慢请求定位方法:分析方法
分析方法
- 连接数据库。
- 针对慢查询可以通过如下命令检查其执行计划。
explain()
例如:
db.test.find({"data_id" : "ae4b5769-896f-465c-9fbd-3fd2f3357637"}).explain(); db.test.find({"data_id" : "775f57c2-b63e-45d7-b581-3822dba231b4"}).explain("executionStats");
对于查询而言,因为覆盖查询不需要读取文档,而是直接从索引中返回结果,这样的查询非常高效,所以尽可能使用索引覆盖查询。如果explain()的输出显示indexOnly字段为真,则说明这个查询就被一个索引覆盖。
- 执行计划解析。
- 查看执行时间。
executionStats.executionStages.executionTimeMillisEstimate和executionStats.executionStages.inputStage. executionTimeMillisEstimate时间越短越好。
表1 参数说明 参数名称
描述
executionStats.executionTimeMillis
执行计划选择和执行的所有时间
executionStats.executionStages.executionTimeMillisEstimate
执行计划的执行完成时间
executionStats.executionStages.inputStage. executionTimeMillisEstimate
执行计划下的子阶段执行完成时间
- 查看扫描条数。
如表2中三个条目相同为最佳。
- 查看Stage状态。
- 查看执行时间。