Query Executor プロセスは、クエリを実行するためにセグメント上に作成されます。クエリを実行すると、動作中の QE が表示されます。ただし、クエリが終了しても、アイドル状態のままです。クエリが終了した後、HAWQ は QE プロセスを再利用しますか?
5 に答える
はい、HAWQ QE プロセスはセッション レベルで保持されます。クエリを既に終了しているが、セッションが有効な場合、同じセッションを介して送信した次のクエリは、既に開始されている QE を再利用します。
2 つの現象があります。1) キャッチされた QE プロセス数が、同じホスト上の新しいクエリに必要な QE より少ない。この場合、HAWQ はキャッチされた QE を再利用し、不十分な数に対して新しい QE を開始します。2) キャッチされた QE プロセス数が、同じホスト上の新しいクエリに必要な QE を超えています。この場合、HAWQ はこれらのキャッチされた QE 内のいくつかの QE を選択します。まだアイドル状態の QE がいくつか表示されます。
必要な QE の数は、リソース マネージャーによって決定されます。
さらに、「SET」コマンドを実行すると、セグメント ホストにキャッチされた QE がある場合、すべての QE が再利用されます。ただし、キャッチされた QE がない場合、「SET」コマンドはセグメント内の QE を開始しません。
間隔 GUC は gp_vmem_idle_resource_timeout で、セッションで設定できます。
さらに、セッションを終了すると、間隔に関係なく、フォークされたすべての QE が終了します。
はい。間隔内に別のクエリが発生した場合、QE を再利用できます。この間隔がタイムアウトすると、QE は終了します。