Ganos は PostgreSQL の並列クエリ機能を使用して、大量のデータを含む複雑な時空間データクエリを高速化できます。
並列クエリの原理
並列クエリはテーブルレベルで実行されます。 次の図は、並列クエリのプロセスを示しています。
注記
- 並列クエリに使用されるワーカーの数が多いほど、CPU 負荷が高くなります。 一部のシナリオですでに CPU 負荷が高い場合は、ワーカー数を 2 に設定することを推奨します。つまり、max_parallel_workers_per_gather パラメーターを 2 に設定します。
- メモリが限られているサーバーで高同時実行アクセスリクエストの並列クエリを有効にする場合、work_mem パラメーター (最小値は 64 で単位は KB) を適切に設定する必要があります。 同時アクセスリクエストの数と並列ワーカーの数、および work_mem パラメーターの値を掛けた数がサーバーメモリの 60% を超えないように注意してください。
手順
Ganos 並列クエリを有効にするには、次の手順に従います。
- 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 パラメーターの説明をご参照ください。
- Ganos 関数のコストを増やします。
Ganos モジュール拡張が作成された後、関数にはデフォルトのコストがあります。 モジュール拡張のテーブルのデータサイズが小さい場合、並列クエリはデフォルトで無効になっています。 関数が計算集中型であり、並列クエリがその関数に適している場合は、並列クエリを有効にする前に、関数のコストを増やす必要があります。