Mongodb sort排序時內存報錯

背景

在使用node.js+mongodb開發的後端項目,在查詢時,使用了排序,出現如下報錯

Mongodb: Sort operation used more than the maximum 33554432 bytes of RAM

Mongodb的sort操作是把數據拿到內存中再進行排序的,默認給sort操作分配的內存爲32MB,當查詢數據量比較大時,超過32MB,則報錯

解決方案有個思路

1、分配多點排序內存(增加10倍)

db.adminCommand({setParameter:1, internalQueryExecMaxBlockingSortBytes:335544320})
// 若內存足夠,可以考慮,但是,這將比較消耗資源

2、按錯誤提示,創建索引

db.myCollection.createIndex({fieldName: 1})  // 1爲升序,-1爲降序
db.myCollection.getIndexes()  //查看當前collection的索引
// 創建索引將導致以下兩點問題
// 1. 寫數據變慢
// 2. 索引本身站用存儲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章