MongoDB长期使用后聚合查询效率下降问题排查与优化求助
单实例MongoDB聚合查询性能差异问题分析与优化
环境背景
- 单实例(standalone)MongoDB 7.0
- 数据库仅含单个集合,约3200万条文档,近半数文档存在多次更新操作
- 已基于
column1和column2创建复合索引column1_1_column2_1
原查询与集合复制操作
原用于统计文档数量的聚合管道:
db.collection.aggregate([ { $match: { column1: "...", column2: "..." }}, { $count: "count" } ],{hint:"column1_1_column2_1"})
通过mongodump和mongorestore完成原集合的复制,预期两个集合的查询执行效率一致。
问题现象
将聚合管道新增column3匹配条件后:
db.collection.aggregate([ { $match: { column1: "...", column2: "...", "column3": "..." }}, { $count: "count" } ],{hint:"column1_1_column2_1"})
原集合的该查询执行速度极慢,但复制后的集合查询表现正常。通过explain分析发现,两个集合的seek阶段差异显著(左侧为原数据库慢查询截图,右侧为复制数据库截图)。
已尝试的优化操作
- 执行
compact命令 - 重建目标索引
问题咨询
- 导致原集合查询变慢的直接原因是什么?
- 如何在无停机的前提下提升原数据库的查询速度?
- 该性能差异问题的根本原因是什么?
内容的提问来源于stack exchange,提问作者WeiAnHsieh
相关产品推荐
相关产品推荐

