全部产品
Search
文档中心

:Gunakan Elastic Parallel Query untuk mempercepat pembuatan indeks

更新时间:Nov 09, 2025

Anda dapat menggunakan fitur Elastic Parallel Query untuk mempercepat proses pembuatan indeks Pohon-B dan indeks global dari indeks Pohon-B. Topik ini menjelaskan cara kerja fitur ini serta langkah-langkah penggunaannya.

Cara kerjanya

Ketika PolarDB for PostgreSQL membuat indeks, layanan ini memindai tabel heap yang ingin diindeks dan membuat entri terindeks. Kemudian, layanan ini membangun Pohon-B berdasarkan entri tersebut.

Dengan menggunakan fitur ini, sistem secara otomatis membuat proses query coordinator (QC) untuk memindai tabel heap secara paralel. Proses pembuatan indeks kemudian menerima hasil pemindaian dari proses QC dan membangun indeks.

Peringatan

  • Fitur ini hanya dapat digunakan untuk mempercepat pembuatan indeks pada kolom umum. Fitur ini tidak mendukung sintaks seperti CONCURRENTLY atau INCLUDE dalam pembuatan indeks.

  • Indeks tidak dapat dibuat untuk kolom yang ditentukan oleh ekspresi.

Parameter

Untuk menggunakan fitur Elastic Parallel Query dalam mempercepat pembuatan indeks, konfigurasikan parameter berikut:

Parameter

Deskripsi

polar_px_enable_btbuild

Menentukan apakah akan menggunakan fitur ini untuk mempercepat pembuatan indeks. Nilai default: off. Nilai valid:

  • off

  • on

polar_px_dop_per_node

Menentukan derajat paralelisme yang berlaku saat Anda menggunakan fitur ini untuk mempercepat proses pembuatan indeks. Nilai default adalah 1. Kami merekomendasikan Anda menyetel nilai menjadi 8 atau 16.

Parameter ini juga menentukan derajat paralelisme untuk Elastic Parallel Query. Untuk informasi lebih lanjut, lihat Jalankan kueri analitik.

Anda juga dapat menyetel parameter ini ke on untuk peran database tertentu.

polar_px_enable_replay_wait

Jika Anda menyetel polar_px_enable_btbuild ke on, parameter polar_px_enable_replay_wait secara otomatis berlaku untuk sesi saat ini. Ini memastikan bahwa entri terbaru dalam tabel diindeks. Setelah indeks dibuat, sistem menyetel ulang parameter ke nilai default di database.

polar_bt_write_page_buffer_size

Menentukan kebijakan pada operasi I/O tulis saat indeks dibuat. Secara default, parameter disetel ke 0. Nilai ini menunjukkan bahwa entri terindeks disiram ke disk blok demi blok saat Anda membuat indeks. Satuan pengukuran adalah blok. Nilai maksimum adalah 8192. Kami merekomendasikan Anda menyetel nilai menjadi 4096.

  • Jika Anda menyetel parameter ini ke 0, semua entri indeks pada halaman indeks disiram ke blok disk satu per satu ketika halaman indeks sepenuhnya dimuat selama pembuatan indeks.

  • Jika Anda menyetel parameter ini ke nilai yang bukan 0, entri terindeks yang akan disiram disimpan dalam buffer kernel dengan ukuran yang ditunjukkan oleh parameter ini. Ketika buffer sepenuhnya dimuat, semua entri terindeks dalam buffer disiram ke disk sekaligus. Ini mencegah overhead kinerja yang diakibatkan oleh penjadwalan I/O yang sering. Parameter ini membantu Anda mengurangi waktu yang diperlukan untuk membuat indeks hingga 20%.

Contoh

Informasi Latar Belakang

Eksekusi pernyataan berikut untuk membuat tabel bernama test:

CREATE TABLE test(id int,id2 int);

Kueri skema tabel:

\d test
               Table "public.test"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 id     | integer |           |          |
 id2    | integer |           |          |

Untuk menggunakan Elastic Parallel Query dalam mempercepat pembuatan indeks tabel test, ikuti langkah-langkah berikut:

  1. Setel parameter polar_px_enable_btbuild ke on untuk mengaktifkan fitur Elastic Parallel Query.

    Eksekusi pernyataan berikut:

    SET polar_px_enable_btbuild=on;

    Periksa apakah konfigurasi telah diterapkan:

    SHOW polar_px_enable_btbuild;

    Hasil berikut akan ditampilkan:

      polar_px_enable_btbuild
    -------------------------
     on
    (1 row)
  2. Eksekusi pernyataan berikut untuk membuat indeks:

    CREATE INDEX t ON test(id) WITH(px_build=on);

    Kueri skema tabel:

    \d test
                   Table "public.test"
     Column |  Type   | Collation | Nullable | Default
    --------+---------+-----------+----------+---------
     id     | integer |           |          |
     id2    | integer |           |          |
    Indexes:
        "t" btree (id) WITH (px_build=finish)
Catatan

Untuk menggunakan fitur Elastic Parallel Query, tambahkan opsi px_build dalam pernyataan CREATE INDEX.

Setelah indeks dibuat, informasi tipe indeks mencakup bidang (px_build=finish), yang menunjukkan bahwa indeks dibuat menggunakan fitur Elastic Parallel Query.

Jika polar_px_enable_btbuild disetel ke on tetapi opsi px_build tidak ditambahkan dalam pernyataan CREATE INDEX, metode asli dari PolarDB for PostgreSQL akan digunakan untuk membuat indeks. Contoh:

CREATE INDEX t ON test(id);

Kueri skema tabel:

\d test
                Table "public.test"
 Column |  Type   | Collation | Nullable | Default
--------+---------+-----------+----------+---------
 id     | integer |           |          |
Indexes:
    "t" btree (id)

Data kinerja

Pembuatan indeks untuk tabel besar sekitar lima kali lebih cepat menggunakan fitur Elastic Parallel Query dibandingkan dengan metode asli dari PolarDB for PostgreSQL.