Ganos は PostgreSQL の並列クエリ機能を使用して、大量のデータを含む複雑な時空間データクエリを高速化できます。

並列クエリの原理

並列クエリはテーブルレベルで実行されます。 次の図は、並列クエリのプロセスを示しています。

注記

  • 並列クエリに使用されるワーカーの数が多いほど、CPU 負荷が高くなります。 一部のシナリオですでに CPU 負荷が高い場合は、ワーカー数を 2 に設定することを推奨します。つまり、max_parallel_workers_per_gather パラメーターを 2 に設定します。
  • メモリが限られているサーバーで高同時実行アクセスリクエストの並列クエリを有効にする場合、work_mem パラメーター (最小値は 64 で単位は KB) を適切に設定する必要があります。 同時アクセスリクエストの数と並列ワーカーの数、および work_mem パラメーターの値を掛けた数がサーバーメモリの 60% を超えないように注意してください。

手順

Ganos 並列クエリを有効にするには、次の手順に従います。
  1. PostgreSQL の構成ファイルである postgresql.conf で並列クエリパラメーターを設定します。
    • max_parallel_workers を設定して、有効にできる並列ワーカーの総数を 8~32 の範囲で指定します。 このパラメーターの値は、max_worker_processes パラメーターの値よりも小さくする必要があります。
    • max_parallel_workers_per_gather を設定して、1 つのクエリギャザーの並列ワーカーの数を 2~4 の範囲で指定します。 このパラメーターの値は、max_parallel_workers パラメーターの値よりも小さくする必要があります。
    • 並列クエリを強制的に有効にするには、force_parallel_mode パラメーターを on に設定します。
    • テーブルの並列ワーカーの数を設定するには、次の SQL ステートメントを実行します。alter table table_name set (parallel_workers=n)
      上記の SQL ステートメントで、n は並列ワーカーの数を示します。 n に適切な値を設定する方法についての詳細は、max_parallel_workers_per_gather パラメーターの説明をご参照ください。
  2. Ganos 関数のコストを増やします。

    Ganos モジュール拡張が作成された後、関数にはデフォルトのコストがあります。 モジュール拡張のテーブルのデータサイズが小さい場合、並列クエリはデフォルトで無効になっています。 関数が計算集中型であり、並列クエリがその関数に適している場合は、並列クエリを有効にする前に、関数のコストを増やす必要があります。