What is a Thread, a Plan, and a Queue

CData Virtuality のプランは、クエリ実行プランを指し、CData Virtuality がクエリを実行するために生成する詳細構造です。クエリをソースからのデータの取得、フィルタの適用、結合、集計などの論理的なステップに分解します。すなわち、プランは、クエリを表す高レベルのエンティティです。

CData Virtuality のスレッドは、クエリの一部の処理やソースからのデータ取得などのタスクを実行する実行単位で、CData Virtuality のクエリ実行のバックボーンです。すなわち、スレッドは、プランの一部を実行する下位レベルの作業単位です。

CData Virtuality のジョブのキューは、現時点でCData Virtuality が実行するための空きスロットが十分にないジョブを保持するエンティティです。例えば、あるキューハンドラに15 個の並列ジョブthreadCount(これは、そのキューハンドラーで同時に実行できるジョブの数を表す数値)があり、すでに15 の実行中のジョブがある場合、次に開始するジョブはキューに入れられ、すでに実行中の15 のジョブのいずれかが終了してスロットを解放するまで、そこに留まります。キューハンドラは実行中のジョブを管理するもので、空きスロットがある場合にキューから"自分の" ジョブ(特定のキューハンドラにスケジュールが割り当てられているもの)を選びます。したがって、ジョブのキュー は、実行可能なスレッド / スロットを待つジョブの待ち行列です。

How Threads, Plans, and Queues Work Together

キューは、ジョブの数と実行順序を処理します。ジョブが実行されると、プランが作成され、スレッドも作成されて、ジョブのプランに割り当てられます。

プランスレッドは、クエリプランが3つの異なるソースからデータをフェッチする場合、CData Virtuality がこれらのフェッチ操作を同時に処理するために複数のスレッドを割り当てる可能性があるという意味で関連しています。max-active-plansmax-threads の設定を一緒に使用することで、クエリの同時実行性とシステムパフォーマンスのバランスを調整することができます。例えば:

  • max-active-plans は、アクティブなクエリが多すぎてシステムに負担がかからないようにします。
  • max-threads は、アクティブなプランを効率的に実行するのに十分なリソースがあることを保証します。

How Requests Not Coming from a Job are Handled

リクエストがジョブからでない場合(例えば、Web UI やStudio クエリからの場合)、CData Virtuality はジョブキューを経由せずにリクエストを実行するために必要なプランスレッドを自動的に作成して割り当てます。