簡體   English   中英

MongoDB小集合查詢非常慢

[英]MongoDB small collection Query very slow

我有一個33MB的收藏品,里面有大約3.3k件商品。 在過去的一個月中,它一直運行良好,查詢是響應式的,沒有慢查詢。 集合具有所有必需的索引,通常響應幾乎是即時的(1-2ms)

今天,我發現那里有一個主要的查詢隊列,而請求只是沒有得到處理。 Oplog正在填滿,只是沒有清除。 經過一番搜索,我發現下面的帖子建議壓縮和databaseRepair。 我進行了維修,它解決了問題。 在簡單但大型的數據庫中對小型集合進行mongoDB查詢的速度異常慢

我的問題是集合可能出了什么問題,databaseRepair如何解決該問題? 我有辦法確保不再發生這種情況嗎?

這里有很多事情可能會成為問題,但最終,如果維修/緊湊為您解決了問題,則表明存在存儲相關問題。 以下是一些后續建議:

磁盤性能:確保磁盤性能正常並且沒有壞扇區。 如果磁盤的一部分損壞,則訪問時間可能會增加,您可能會再次遇到這種情況。 您可能還需要測試您的RAM模塊。

碎片化:很難知道您的寫配置文件,但是您的集合和索引可能已經分散了整個存儲系統。 運行修復將重建它們,並使它們恢復為更連續的形式,從而使您的磁盤訪問時間變得更快,尤其是如果您正在使用機械磁盤並且要向磁盤中存儲大量數據時。

如果這是問題所在,那么您將來可能希望調整paddingFactor以減少這種情況的發生,尤其是當您的更新隨着時間的推移而增加文檔的大小時。 (假設您正在使用MMAPv1存儲)。

頁面錯誤:我假設您可能已使系統停機以進行維修,這可能已重置內存/工作裝置。 您可能希望監視硬頁錯誤,這些錯誤表明您的查詢正在受到IO的瓶頸,而不是由內存中的工作集提供服務。 如果始終是這種情況,則由於將數據推入和推出內存,您的應用程序行為可能會發生意外更改,並且您可能需要添加更多RAM。

暫無
暫無

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

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