All Products
Search
Document Center

PolarDB:Gunakan Elastic Parallel Query untuk mempercepat pembuatan indeks

Last Updated:Mar 29, 2026

Pembuatan indeks B-tree pada tabel besar dapat memakan waktu signifikan, mengganggu jendela pemeliharaan dan memperlambat migrasi skema. Elastic Parallel Query (EPQ) memparalelkan pemindaian heap table selama pembuatan indeks, sehingga mengurangi waktu pembuatan menjadi sekitar seperlima dibandingkan metode serial native.

Cara kerja

Tanpa EPQ, PolarDB for PostgreSQL (Compatible with Oracle) melakukan pemindaian heap table secara berurutan untuk membuat entri indeks, lalu membangun B-tree dari entri tersebut.

Dengan EPQ diaktifkan, proses query coordinator (QC) mendistribusikan pemindaian heap ke beberapa Parallel Worker. Setiap worker memindai satu partisi tabel dan meneruskan hasilnya ke proses pembuatan indeks, yang kemudian menyusun B-tree akhir.

Batasan

BatasanDetail
Tipe kolomEPQ hanya mempercepat pembuatan indeks pada kolom umum. Kolom ekspresi tidak didukung.
SintaksisOpsi CONCURRENTLY dan INCLUDE tidak didukung dengan EPQ.

Parameter

Konfigurasikan parameter berikut sebelum membuat indeks dengan EPQ.

ParameterDefaultDisarankanDeskripsi
polar_px_enable_btbuildoffonMengaktifkan pembuatan indeks yang dipercepat oleh EPQ.
polar_px_dop_per_node18 atau 16Degree of parallelism (DOP) per node. Juga mengontrol DOP untuk .
polar_px_enable_replay_wait(auto)Diaktifkan secara otomatis untuk session saat ini ketika polar_px_enable_btbuild=on. Memastikan entri tabel terbaru diindeks. Nilai parameter ini dikembalikan ke default database setelah pembuatan indeks selesai.
polar_bt_write_page_buffer_size04096Mengontrol perilaku write I/O selama pembuatan indeks. Satuan: blok. Maksimum: 8192. Mengatur nilai ini menjadi 4096 dapat mengurangi waktu pembuatan indeks hingga 20%.

Perilaku polar_bt_write_page_buffer_size

  • `0` (default): Menyimpan entri indeks ke disk blok per blok saat setiap halaman indeks penuh.

  • Nilai bukan nol: Menyimpan entri indeks dalam buffer kernel dengan ukuran yang ditentukan dan menyimpan semuanya sekaligus saat buffer penuh, sehingga mengurangi overhead penjadwalan I/O yang sering terjadi.

Buat indeks B-tree dengan EPQ

Prasyarat

Sebelum memulai, pastikan Anda memiliki:

  • Kluster PolarDB for PostgreSQL (Compatible with Oracle)

  • Akses untuk menjalankan pernyataan DDL pada tabel target

Prosedur

Contoh berikut membuat tabel bernama test dan membangun indeks menggunakan EPQ.

1. Buat tabel uji coba.

CREATE TABLE test(id int, id2 int);

Verifikasi skema tabel:

\d test

Output yang diharapkan:

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

2. Aktifkan pembuatan indeks EPQ yang dipercepat.

SET polar_px_enable_btbuild=on;

Verifikasi pengaturan:

SHOW polar_px_enable_btbuild;

Output yang diharapkan:

 polar_px_enable_btbuild
-------------------------
 on
(1 row)

3. Buat indeks.

Tambahkan WITH (px_build=on) ke pernyataan CREATE INDEX untuk menggunakan EPQ dalam pembuatan ini:

CREATE INDEX t ON test(id) WITH(px_build=on);
polar_px_enable_btbuild=on saja tidak mengaktifkan EPQ untuk pembuatan indeks tertentu. Anda harus menyertakan WITH (px_build=on) dalam pernyataan CREATE INDEX. Tanpa itu, PolarDB menggunakan metode pembuatan indeks native (serial), dan indeks yang dihasilkan tidak menampilkan anotasi px_build.

4. Verifikasi bahwa indeks dibuat dengan EPQ.

\d test

Output yang diharapkan:

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

Bidang (px_build=finish) mengonfirmasi bahwa EPQ digunakan.

Data kinerja

EPQ membuat indeks untuk tabel besar sekitar lima kali lebih cepat dibandingkan metode native.

Gambar berikut membandingkan kinerja pembuatan indeks global sebelum dan sesudah mengaktifkan EPQ, menggunakan data sebesar 130 GB.

Performance comparison

Langkah selanjutnya