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 の使用法 » データの問い合わせと修正 » クエリ

 

高度:クエリ実行時の並列処理

SQL Anywhere では、クエリ実行に対して、クエリ間とクエリ内の 2 種類の並列処理がサポートされています。クエリ間並列処理とは、異なる要求を別個の CPU 上で同時に実行することです。各要求 (タスク) は単一のスレッド、単一のプロセッサーで実行されます。

クエリ内並列処理とは、単一の要求を複数の CPU で同時処理することです。クエリが分割されて各部がマルチプロセッサーのハードウェアで並列処理されます。これらの各部は交換アルゴリズムで処理されます。

クエリ内並列処理では、同時に実行されるクエリ数が使用可能なプロセッサー数より少ないことが多い場合に、負荷が分散されます。並列処理の程度は、max_query_tasks オプションを設定して制御します。

オプティマイザーは、並列処理の追加コスト (ローの追加コピー、作業量の調整のための追加コスト) を推定し、パフォーマンスの向上が期待できる場合のみ並列プランを選択します。

クエリ内並列処理は、priority オプションが background に設定されている接続には使用されません。

現在要求を処理しているサーバースレッド数 (ActiveReq サーバープロパティ) が、データベースサーバーが使用ライセンスを持つコンピューターの CPU コア数を最近超えた場合は、クエリ内並列処理は使用されません。正確な時間はサーバーによって決められ、通常は数秒です。

 並列実行
 参照

クエリの並列処理