スロットベースのクエリ実行エンジン
バージョン 5.1 で追加。
クエリ結果を検索して返すために、MongoDB は次のいずれかのクエリ エンジンを使用します。
クラシック クエリ エンジン
スロットベースのクエリ実行エンジン。MongoDB 5.1 以降の一部のクエリで使用できます。
MongoDB はクエリを実行するためのエンジンを自動的に選択します。 特定のクエリのエンジンを手動で指定することはできません。
MongoDB は、特定の条件が満たされたクエリのサブセットに対して スロットベースのクエリ実行エンジンを 使用できます。 ほとんどの場合、スロットベースの実行エンジンは、従来のクエリ エンジンと比較してパフォーマンスが向上し、CPU とメモリのコストが削減されます。
MongoDB は、スロットベースのクエリ実行エンジンに適していないクエリにはクラシック エンジンを使用します。
スロットベースの実行エンジンに適したクエリ
MongoDB は、クエリごとにスロットベースの実行エンジンを使用するかどうかを判断し、クエリに存在する各演算子と式のサポートを考慮します。 たとえば、スロットベースの実行エンジンを使用する 2 つの一般的なパイプラインは、 $group
または$lookup
ステージで集計されます。 ただし、スロットベースの実行エンジンのサポートはバージョンに固有であり、積極的に変更されます。
クエリがスロットベースの実行エンジンを使用しているかどうかを確認するには、 使用されたクエリ エンジンを決定するセクションを参照してください。
どのクエリ エンジンが使用されたかを特定する
クエリの実行にクラシック エンジンとスロットベースの実行エンジンのどちらが使用されたかを判断する方法がいくつかあります。
クエリ説明の結果の確認
クエリの explain 結果は、使用されたクエリ エンジンによって異なります。 たとえば、スロットベースの実行エンジンを使用して実行されたクエリの explain 結果にはexplain.queryPlanner.winningPlan.slotBasedPlan
フィールドが含まれます。
クエリ エンジン間の explain 結果の違いの詳細については、 explain の出力構造 を参照してください。
スロー クエリ ログの確認
低速操作ログメッセージ には、クエリを実行したクエリエンジンを示す queryFramework
フィールドが含まれます。
queryFramework: "classic"
は、クラシック エンジンでクエリが実行されたことを示します。queryFramework: "sbe"
はスロットベースのクエリ実行エンジンでクエリが実行されたことを示します。
スロットベースの実行エンジンを使用したクエリのログ メッセージの例については、「低速操作 」を参照してください。