Docs Menu

スロットベースのクエリ実行エンジン

バージョン 5.1 で追加

クエリ結果を検索して返すために、MongoDB は次のいずれかのクエリ エンジンを使用します。

  • クラシック クエリ エンジン

  • スロットベースのクエリ実行エンジン。MongoDB 5.1 以降の一部のクエリで使用できます。

MongoDBはクエリを実行するためのエンジンを自動的に選択します。 8.0より前のバージョンのMongoDBでは、特定のクエリのエンジンを手動で指定することはできません。 MongoDB 8.0以降では、 クエリ設定 を使用してクエリのエンジンを指定できます。 詳細については、 setQuerySettingsを参照してください。

MongoDB は、特定の条件が満たされたクエリのサブセットに対して スロットベースのクエリ実行エンジンを 使用できます。 ほとんどの場合、スロットベースの実行エンジンは、従来のクエリ エンジンと比較してパフォーマンスが向上し、CPU とメモリのコストが削減されます。

MongoDB は、スロットベースのクエリ実行エンジンに適していないクエリにはクラシック エンジンを使用します。

MongoDB は、クエリごとにスロットベースの実行エンジンを使用するかどうかを判断し、クエリに存在する各演算子と式のサポートを考慮します。 たとえば、スロットベースの実行エンジンを使用する 2 つの一般的なパイプラインは、 $group } ステージまたは$lookupステージで集計されます。 ただし、スロットベースの実行エンジンのサポートはバージョンに固有であり、積極的に変更されます。

クエリがスロットベースの実行エンジンを使用したかどうかを確認するには、「 使用されたクエリ エンジンの決定 」セクションを参照してください。

バージョン8.0以降、 MongoDB は、ブロック処理を使用して特定の時系列クエリを実行する場合があります。 このパフォーマンス向上により、クエリは個々の値ではなく、データの「ブロック」単位で処理されます。 ブロック処理 により、時系列コレクションを操作する際のクエリ実行速度とスループットが向上します。

詳しくは「時系列データのクエリ 」を参照してください。

クエリの実行にクラシック エンジンとスロットベースの実行エンジンのどちらが使用されたかを判断する方法がいくつかあります。

クエリの explain 結果は、使用されたクエリエンジンによって異なります。 例、スロットベースの実行エンジンを使用して実行されたクエリの explain 結果 には、 explain.queryPlanner.winningPlan.slotBasedPlanフィールドが含まれます。

クエリ エンジン間の explain 結果の違いの詳細については、 explain の出力構造 を参照してください。

低速オペレーションログメッセージには、クエリを実行したクエリエンジンを示す queryFramework フィールドが含まれます。

  • queryFramework: "classic"は、クラシック エンジンでクエリが実行されたことを示します。

  • queryFramework: "sbe"は、スロットベースのクエリ実行エンジンでクエリが実行されたことを示します。

スロットベースの実行エンジンを使用したクエリのログ メッセージの例については、「低速操作 」を参照してください。