mongodb Sort operation used more than the maximum 33554432 bytes of RAM

來源:互聯網
上載者:User

標籤:另一個   錯誤提示   maximum   nfa   add   報錯   使用   建立   欄位   

在 mongo 使用過程中遇到了一個問題,需求就是要對mongo 庫中查詢到資料進行分頁,mongo庫我們知道都會儲存大容量的資料,如果庫裡資料多的話,這時會報一個 Query failed with error code 96 and error message ‘Executor error during find command:OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM.Add an index, or specify a smaller limit.‘

按照錯誤提示,知道這是排序的時候報的錯,因為 mongo 的 sort 操作是在記憶體中操作的,必然會佔據記憶體,同時mongo 內的一個機制限制排序時最大記憶體為 32M,當排序的資料量超過 32M,就會報上面的這個錯,解決辦法就像上面提示的意思,一是加大 mongo 的排序記憶體,這個一般是營運來管,也有弊端,就是資料量如果再大,還要往上加。另一個辦法就是加索引,這個方法還是挺方便的。建立索引及時生效,不需要重啟服務。 建立索引也不難,

db.你的collection.createIndex({"你的欄位": -1}),此處 -1 代表倒序,1 代表正序;

db.你的collecton.getIndexes();

這兩個語句,第一個是添加索引,第二個是查詢索引,如果查看到你剛才添加的那個索引欄位,就說明索引添加成功了。這時候在你的程式裡再運用 sort 方法的話,這樣就不會報錯而且速度很快。

添加索引會帶來一定的弊端,這樣會導致資料插入的時候相對之前較慢,因為索引會佔據空間的。綜上考慮,根據實際情況判斷採用合適的方法。

mongodb Sort operation used more than the maximum 33554432 bytes of RAM

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.