MongoDB查询计划修订-写密集型集合

MongoDB查询计划修订-写密集型集合,mongodb,Mongodb,MongoDB官方文档声明查询优化器将在几个事件后删除并重新评估查询计划,其中一个事件是“集合接收1000次写入操作”。 对于每秒执行数百次写入操作的集合,由于优化器将一次又一次地运行多个计划,查询的性能将降低 除了使用提示,还有什么办法可以解决这个问题吗?优化器是否可以调整以允许更大数量的搅动 非常感谢, 投资回报率(Roi)目前,我看不到任何方法可以超越查询计划评估的这些限制 然而,尽管如此,只有在超过这些阈值后发生的下一次查询时才会支付罚款。查询计划器执行多个计划,并在确定哪个计划响应条

MongoDB官方文档声明查询优化器将在几个事件后删除并重新评估查询计划,其中一个事件是“集合接收1000次写入操作”。

对于每秒执行数百次写入操作的集合,由于优化器将一次又一次地运行多个计划,查询的性能将降低

除了使用提示,还有什么办法可以解决这个问题吗?优化器是否可以调整以允许更大数量的搅动

非常感谢,


投资回报率(Roi)

目前,我看不到任何方法可以超越查询计划评估的这些限制

然而,尽管如此,只有在超过这些阈值后发生的下一次查询时才会支付罚款。查询计划器执行多个计划,并在确定哪个计划响应条件的速度足够快时终止大多数其他计划


对于写操作繁重的系统,假设读取次数不多,并且并非所有查询都在计划员完成之前执行,那么惩罚应该已经降低到最低程度。

您有证据表明这是一个问题吗?进行了以下小测试:1。对具有多个候选索引的集合执行查询,将结果集限制为150个文档(大于所需的阈值)。2.在第一次执行时,mongod的verbose(-vv)输出包含以下内容:“runQuery调用Test.demo{}”,紧接着出现了以下行:“running multiple plan”3。同一查询的第二次执行没有显示“正在运行多个计划”4。在集合中插入1000个文档,然后重新运行查询5。“运行多个计划”出现了,执行很慢,谢谢你的评论。不幸的是,我们的案例涉及到一个写密集型集合,这会导致立即超过阈值。这导致(几乎)每个读取查询最终运行多个计划,执行速度非常慢(当然,假设没有提示)。