Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー SQL の使用法 » データの問い合わせと修正 » クエリ » 高度:クエリ実行時の並列処理

 

クエリの並列処理

クエリは、クエリが処理するロー数が、返されるロー数よりも多い場合に並列処理が使用される確率が高くなります。この場合、処理されるロー数には、スキャンされるすべてのローのサイズとすべての中間結果のサイズが含まれます。インデックスを使用してテーブルのほとんどがスキップされるので、スキャンされないローは含まれません。理想的なケースは、大きなテーブルに対する単一ローの GROUP BY であり、この場合、多数のローがスキャンされ、1 つのローだけが返されます。グループのサイズが大きい場合は、複数グループのクエリも並列処理の確率が高くなります。多数のローを削除する述部またはジョイン条件も高い確率で並列処理されます。

最適化または実行のときにクエリに並列処理が使用されない場合のリストを次に示します。

  • サーバーのコンピューターに複数のプロセッサーがない。

  • サーバーのコンピューターに、複数のプロセッサーを使用するためのライセンスがない。これは、NumLogicalProcessorsUsed サーバープロパティで確認できます。ただし、ハイパースレッドのプロセッサーはクエリ内並列処理対象として数えられないので、コンピューターでハイパースレッドを使用している場合は、NumLogicalProcessorsUsed の値を 2 で割ります。

  • max_query_tasks オプションが 1 に設定されている。

  • priority オプションが background に設定されている。

  • クエリを含む文が SELECT 文ではない。

  • 最近、ActiveReq の値が NumLogicalProcessorsUsed の値以上になったことがある (コンピューターでハイパースレッドを使用している場合はプロセッサー数を 2 で割る)。

  • 使用可能なタスク数が不十分である。

 参照