MongoDB Atlas Profiler:什么是“Num Yields”?

poi*_*oij 3 mongodb mongodb-atlas

在 MongoDB Atlas 仪表板查询分析器中,有一个 Num Yields 字段。它是什么?

截屏

kev*_*adi 7

数据库分析器输出文档页面:

该操作允许其他操作完成的次数。通常,当需要访问 MongoDB 尚未完全读入内存的数据时,操作就会屈服。这允许在 MongoDB 读入数据以进行生成操作时完成内存中有数据的其他操作。有关更多信息,请参阅有关操作何时收益的常见问题解答。

基本上,MongoDB 中的大多数数据库操作都有一个“让出点”,即它可以将控制权交给其他操作的点。这通常是等待从磁盘加载数据。

简而言之,如果您看到大量收益率,则意味着查询花费了大量时间等待从磁盘加载数据。原因通常是:

  • 返回或处理大量数据的查询。如果这是原因,请确保查询仅返回您需要的内容。然而,在某些用例(例如分析)中这可能是无法避免的。
  • 未利用正确索引的低效查询,因此服务器被迫始终从磁盘加载完整文档。如果这是原因,请确保您已创建支持查询的正确索引。
  • 服务器中的 RAM 较小,因此必须始终从磁盘加载数据。如果以上都不是,那么服务器对于当前的任务来说太小了。考虑升级服务器的硬件。

请注意,如果您不是一直看到高产量,那么它并不一定是坏事。但是,如果您在定期运行的查询中看到这种情况,那肯定不好。