gpt4 book ai didi

ruby-on-rails - 在 mongo 分片环境中排序会降低性能

转载 作者:IT老高 更新时间:2023-10-28 13:23:31 25 4
gpt4 key购买 nike

我有一个执行类似这样的查询,

last_shipment_id = OrderDelivery.where(platform: 'business').desc(:shipment_id).limit(1).pluck(:shipment_id)[0]

当我在暂存机中没有分片环境的情况下使用 { platform: 1, shipping_id: -1 } 正确索引时,它只需要 1 ~ 5ms 就可以很好地工作

但是,我们的生产设置了 4 个 sharding mongo db,结果在 1000 ~ 3000ms 结束。

有谁知道这是怎么发生的或者如何解决这个案子?

我已阅读有关此幻灯片的内容 https://www.slideshare.net/mongodb/how-queries-work-with-sharding

嗯,幻灯片 13 上说过,但仍然不确定它是否提到了如何解决此案。

最佳答案

你没有提到你的分片键是什么,但是这个查询必须分散到所有三个分片,这意味着如果任何一个分片很慢,整体结果就会很慢。在要点中,您包括对 shard1 的解释(它很快),但对 shard2 和 shard3 省略了它,总体数字表明它在其中一个分片上很慢。

这意味着要么最优索引不存在于其中一个分片上,要么存在不同的索引,尽管它不是最优的。前一种情况的解决方案是建立所有正确的索引,第二种情况的解决方法是在查询中使用hint来强制使用正确的索引。

关于ruby-on-rails - 在 mongo 分片环境中排序会降低性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43962689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com