DBAtlas · データベース運用アトラス

292: QueryExceededMemoryLimitNoDiskUseAllowed (エラーコード 292)

MongoDB

意味

クエリまたは集計ステージが許可されたメモリ上限 (デフォルト 100 MB) を超え、ディスクへの書き込みが許可されていなかったため失敗した。通常はソートまたはグループステージで見られる。

原因

インデックスのない大量データのメモリ内ソート、大きな $group/$sort 集計ステージ、非常に大きな中間結果セット、allowDiskUse:false の設定。

対処方法

allowDiskUse:true オプションで集計時のディスクへの書出しを許可する: db.collection.aggregate(pipeline, {allowDiskUse:true})。ソート対象フィールドにインデックスを作成してメモリ使用量を減らす。パイプラインの早い段階で $match により絞り込み、処理データ量を減らす。必要なら結果をページングする。MongoDB 6.0 以降では、ほとんどの場合ディスク使用がデフォルトで有効。

DBAtlas で開く →

同じデータベースの他の項目