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メソッドは、ポイントデータにのみ適しています。 このメソッドを他の種類の空間データに使用すると、インデックスのクエリパフォーマンスが低下する可能性があります。
手順
時空間拡張を作成し、テストデータを生成します。
PolarDB for PostgreSQL (Oracleと互換) クラスターにデータベースを作成します。
pgAdminを使用してデータベースに接続します。
次のステートメントを実行して、GanosBase spatio-temporal extensionを作成します。
拡張ganos_geometryカスケードを作成します。次のステートメントを実行してテストデータを生成します。
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;
従来の方法を使用して、空間インデックスを作成します。
次のステートメントを実行して空間インデックスを作成します。
select now(); GiST(geom) を使用したテストでインデックスを作成します。今すぐ選択 ();次の数値は、空間インデックスの作成に使用される時間を示しています。
330.10 SGanosBaseを使用して、空間インデックスを並列に作成します。
次のステートメントを実行して、GanosBaseを使用して並列に空間インデックスを作成します。
set max_parallel_maintenance_workers=4; maintenance_work_mem='1GB' を設定します。polar_enable_gist_sort= onに設定します。今すぐ選択 (); GiST(geom) を使用してテストでインデックスを作成します。今すぐ選択 ();次の数値は、空間インデックスの作成に使用される時間を示しています。
33.54 S
まとめ
従来の方法と比較して、GiST Sort方法は、空間データのインデックス化効率を約9倍向上させる。