繁体   English   中英

MongoDB小集合查询非常慢

[英]MongoDB small collection Query very slow

我有一个33MB的收藏品,里面有大约3.3k件商品。 在过去的一个月中,它一直运行良好,查询是响应式的,没有慢查询。 集合具有所有必需的索引,通常响应几乎是即时的(1-2ms)

今天,我发现那里有一个主要的查询队列,而请求只是没有得到处理。 Oplog正在填满,只是没有清除。 经过一番搜索,我发现下面的帖子建议压缩和databaseRepair。 我进行了维修,它解决了问题。 在简单但大型的数据库中对小型集合进行mongoDB查询的速度异常慢

我的问题是集合可能出了什么问题,databaseRepair如何解决该问题? 我有办法确保不再发生这种情况吗?

这里有很多事情可能会成为问题,但最终,如果维修/紧凑为您解决了问题,则表明存在存储相关问题。 以下是一些后续建议:

磁盘性能:确保磁盘性能正常并且没有坏扇区。 如果磁盘的一部分损坏,则访问时间可能会增加,您可能会再次遇到这种情况。 您可能还需要测试您的RAM模块。

碎片化:很难知道您的写配置文件,但是您的集合和索引可能已经分散了整个存储系统。 运行修复将重建它们,并使它们恢复为更连续的形式,从而使您的磁盘访问时间变得更快,尤其是如果您正在使用机械磁盘并且要向磁盘中存储大量数据时。

如果这是问题所在,那么您将来可能希望调整paddingFactor以减少这种情况的发生,尤其是当您的更新随着时间的推移而增加文档的大小时。 (假设您正在使用MMAPv1存储)。

页面错误:我假设您可能已使系统停机以进行维修,这可能已重置内存/工作装置。 您可能希望监视硬页错误,这些错误表明您的查询正在受到IO的瓶颈,而不是由内存中的工作集提供服务。 如果始终是这种情况,则由于将数据推入和推出内存,您的应用程序行为可能会发生意外更改,并且您可能需要添加更多RAM。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM