簡體   English   中英

在mongo分片環境中排序會降低性能

[英]Sorting in mongo sharding environments degrades performance

我有一個執行這樣的事情的查詢,

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

當我正確索引{platform:1,shipment_id:-1}而沒有在分段機器中分割環境時,它只有1~5ms的效果很好

但是,我們的生產設置了4個分片mongo db,結果最終在1000~3000ms。

有誰知道這可能會如何發生或如何解決這種情況?

我已經閱讀過這張幻燈片https://www.slideshare.net/mongodb/how-queries-work-with-sharding

好吧,它在幻燈片13中說,但仍然不確定它是否已經提到如何解決這個案例。

你沒有提到你的分片鍵是什么,但是這個查詢必須分散到所有三個分片,這意味着如果任何分片很慢,整體結果會很慢。 在要點中,你包括shard1的解釋(這是快速的),但是對於shard2和shard3省略了它,並且整數表明它在其中一個碎片上很慢。

這意味着最佳索引不存在於其中一個分片上,或者存在不同的索引,即使它不是最理想的,也會被選中。 前一種情況下的解決方案是構建所有正確的索引,第二種情況下的解決方案是使用查詢的hint來強制使用正確的索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM