检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
950808 转 1
预约咨询
工单提交
我有建议
未实名认证
已实名认证
分享文档到微博
复制链接到剪贴板
链接复制成功!
在相同的业务场景中,架构设计以及库、集合、索引等的设计都会对查询性能产生影响。良好的设计能够提升查询性能,而不当的设计则会导致大量慢查询(执行时间过长的语句),这些慢查询会消耗大量的系统性能。本文主要介绍导致慢查询的原因及相应的解决方案。
DDS支持在控制台上查看慢日志信息,针对慢日志中过长的操作需要从执行最慢的操作入手,逐个进行优化。
若存在某个聚合操作,因其比较慢,此时操作执行时长超过10s的情况属于正常现象。
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时间越短越好。
参数名称
描述
executionStats.executionTimeMillis
执行计划选择和执行的所有时间
executionStats.executionStages.executionTimeMillisEstimate
执行计划的执行完成时间
executionStats.executionStages.inputStage. executionTimeMillisEstimate
执行计划下的子阶段执行完成时间
如表2中三个条目相同为最佳。
executionStats. nReturned
匹配查询条件的文档数
executionStats .totalKeysExamined
索引扫描条目数
executionStats .totalDocsExamined
文档扫描条目数
状态名称
COLLSCAN
全表扫描
SORT
内存中进行排序
IDHACK
根据_id进行查询
TEXT
全文索引
COUNTSCAN
未用索引计数
FETCH
索引扫描
LIMIT
使用Limit限制返回数
SUBPLA
未用索引的$or查询阶段
PROJECTION
使用索引计数
COUNT_SCAN
使用索引
上一篇:集群实例负载不均衡问题排查
下一篇:优化数据库语句方法
在使用文档中是否遇到以下问题
意见反馈(选填)
请至少选择一项反馈信息并填写问题反馈
字符长度不能超过500
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨