GanosBase並行建立空間索引

更新時間:
Copy as MD

PolarDB PostgreSQL版(相容Oracle)提供了GanosBase並行建立空間索引功能,本功能採用空間排序(GiST Sort)的方法,可將索引構建過程並行化,並大幅減少磁碟的讀寫操作,實現索引構建加速,您可通過本章節的內容體驗千萬級時空資料建立空間索引加速的過程。

背景資訊

PostgreSQL資料庫非常適合用來儲存管理空間資料,然而隨著資料量的日益增長,效能問題也日益明顯,當資料量達到千萬級規模時,建立空間索引耗時會比較長。

前提條件

  • 擁有阿里雲帳號

  • 已建立PolarDB PostgreSQL版(相容Oracle)叢集,本章節以416 GBPolarDB PostgreSQL版(相容Oracle)叢集為例。

注意事項

空間排序方法僅適用於點資料(Point),其他空間類型的資料使用此方法將會降低索引的查詢效能。

操作步驟

  1. 建立時空擴充並產生測試資料。

    1. PolarDB PostgreSQL版(相容Oracle)叢集中,建立資料庫。

    2. 使用pgAdmin串連資料庫。

    3. 執行以下命令,建立GanosBase時空擴充。

      create extension ganos_geometry cascade;
    4. 執行以下命令,產生測試資料。

      CREATE TABLE test (id int, geom Geometry(Point, 4326), name text, code int);
      INSERT INTO test SELECT i,
                      ST_SetSRID(ST_MakePoint(random() * 180.0, random() * 90.0), 4326),
                      'text', 1
                      FROM generate_series(1,1000 * 10000) AS i;
  2. 傳統方法建立空間索引。

    執行以下命令,建立空間索引。

    select now();
    CREATE index ON test using GiST(geom);
    select now();

    耗時統計:

    330.10 S
  3. 使用GanosBase並行建立空間索引。

    執行以下命令,使用GanosBase並行建立空間索引。

    set max_parallel_maintenance_workers=4;
    set maintenance_work_mem='1GB';
    set polar_enable_gist_sort= on;
    
    select now();
    CREATE index on test using GiST(geom);
    select now();

    耗時統計:

    33.54 S

結論

使用GanosBase並行建立空間索引,耗時比傳統方法建立空間索引提升了10倍左右。