如何减少MongoDB';s内存消耗和提高其响应时间?还是Python中具有相同改进的变通方法?
我使用的是“MongoDB v4.2.x”。我的服务器内存只有4GB,MongoDB的利用率超过了60%。我运行的是简单的查询,甚至不是聚合,而且响应时间太慢 问题:在查询MongoDB数据库时,如何减少内存消耗并提高响应时间 到目前为止的想法:如何减少MongoDB';s内存消耗和提高其响应时间?还是Python中具有相同改进的变通方法?,python,mongodb,memory,time,sqlperformance,Python,Mongodb,Memory,Time,Sqlperformance,我使用的是“MongoDB v4.2.x”。我的服务器内存只有4GB,MongoDB的利用率超过了60%。我运行的是简单的查询,甚至不是聚合,而且响应时间太慢 问题:在查询MongoDB数据库时,如何减少内存消耗并提高响应时间 到目前为止的想法: MongoDB中是否有内存限制选项,以便加载的数据库中未使用的部分可以外包给磁盘 将“wiredTiger”缓存大小更改为1GB,但响应时间非常缓慢。还有其他MongoDB的改进吗 Python中是否有一种变通方法,而不是调整MongoDB本身
如果您只是想提高响应时间并减少MongoDB占用的内存,一个解决方法是将MongoDB数据加载到pandas数据帧中,如下两个选项
- 可以在运行Python脚本期间释放内存,请参见,也可以覆盖对象
- 要避免不必要的对象复制,请使用参数“inplace”/“self assign changed objects/use”更改对象。若要使用其他技巧在原地更改对象,请使用其他技巧,即避免复制
- 对于大规模操作,请尽可能将熊猫对象转换为numpy对象。Python是在numpy上构建的,在numpy上速度最快,pandas提供了更多(更舒适)的选项,但开销更大
- 选择列表理解而不是df.apply()/df.iterrows(),请参阅
- (勾选此项)
- df.explode()/df.groupby(有关时间序列,请参见此处)
- df.枢轴与df.熔体(=未剥离)
optimizeMemory
标志可以让你的查询快速进行。您需要分析您的使用情况以及它对服务器资源的影响。@Alexedim我的应用程序是instagram+airbnb的组合。是的,我有所有必要字段的索引。在我的数据库中,有80个集合,每个集合有10000条记录。不,我用的是mongobooster。我不知道Mongo Compass。@CodeCaster如何分析查询的使用?谢谢回答,让我用pandas DataFrame检查一下。