すべてのプロダクト
Search
ドキュメントセンター

PolarDB:GanosBaseを使用して空間インデックスを並列に作成する

最終更新日:Oct 22, 2024

PolarDB for PostgreSQL (Oracleと互換) では、GanosBaseを使用して空間インデックスを並列に作成できます。 GanosBaseは、空間ソート (GiST Sort) メソッドを使用して、インデックスを並行して作成し、ディスクでの読み取りおよび書き込み操作の数を減らします。 このようにして、割出し効率が改善される。 このトピックでは、数百万の時空間データレコードのインデックス作成プロセスを高速化する方法の例を示します。

背景情報

PostgreSQLデータベースは、空間データの保存と管理に適しています。 データ量の増加は、パフォーマンスの問題を増加させる可能性があります。 数千万のデータレコードの空間インデックスを作成するには時間がかかります。

前提条件

  • Alibaba Cloudアカウントが作成されました。

  • PolarDB for PostgreSQL (Oracleと互換) のクラスターが作成されます。 このトピックで説明する例では、4つのコアと16 GBのメモリを持つPolarDB for PostgreSQL (Compatible with Oracle) のクラスターが使用されています。

追加の考慮事項

GiST Sortメソッドは、ポイントデータにのみ適しています。 このメソッドを他の種類の空間データに使用すると、インデックスのクエリパフォーマンスが低下する可能性があります。

手順

  1. 時空間拡張を作成し、テストデータを生成します。

    1. PolarDB for PostgreSQL (Oracleと互換) クラスターにデータベースを作成します。

    2. pgAdminを使用してデータベースに接続します。

    3. 次のステートメントを実行して、GanosBase spatio-temporal extensionを作成します。

      拡張ganos_geometryカスケードを作成します。
    4. 次のステートメントを実行してテストデータを生成します。

      CREATE TABLEテスト (id int, geom Geometry(Point, 4326), name text, code int);
      テストに挿入するSELECT i、
                      ST_SetSRID(ST_MakePoint (ランダム () * 180.0、ランダム () * 90.0) 、4326) 、
                      「テキスト」、1
                      からgenerate_series(1,1000*10000) AS i; 
  2. 従来の方法を使用して、空間インデックスを作成します。

    次のステートメントを実行して空間インデックスを作成します。

    select now();
    GiST(geom) を使用したテストでインデックスを作成します。今すぐ選択 (); 

    次の数値は、空間インデックスの作成に使用される時間を示しています。

    330.10 S
  3. GanosBaseを使用して、空間インデックスを並列に作成します。

    次のステートメントを実行して、GanosBaseを使用して並列に空間インデックスを作成します。

    set max_parallel_maintenance_workers=4;
    maintenance_work_mem='1GB' を設定します。polar_enable_gist_sort= onに設定します。今すぐ選択 ();
    GiST(geom) を使用してテストでインデックスを作成します。今すぐ選択 (); 

    次の数値は、空間インデックスの作成に使用される時間を示しています。

    33.54 S

まとめ

従来の方法と比較して、GiST Sort方法は、空間データのインデックス化効率を約9倍向上させる。