All Products
Search
Document Center

PolarDB:Infrastruktur impor massal

Last Updated:Jan 28, 2026

PolarDB for PostgreSQL menyediakan infrastruktur impor massal.

Cakupan

Fitur ini tersedia pada kluster PolarDB for PostgreSQL Anda jika menjalankan salah satu versi mesin minor berikut:

  • PostgreSQL 18 dengan versi mesin minor 2.0.18.0.1.0 atau yang lebih baru

  • PostgreSQL 17 dengan versi mesin minor 2.0.17.2.1.0 atau yang lebih baru

  • PostgreSQL 16 dengan versi mesin minor 2.0.16.6.2.0 atau lebih baru

  • PostgreSQL 15 dengan versi mesin minor 2.0.15.12.4.0 atau lebih baru

  • PostgreSQL 14 dengan versi mesin minor 2.0.14.13.28.0 atau lebih baru

Catatan

Latar Belakang

Saat melakukan impor massal data ke objek baru dalam transaksi yang belum dikomit, objek tersebut tidak terlihat oleh proses lain karena isolasi transaksi. PolarDB for PostgreSQL memanfaatkan karakteristik ini untuk menerapkan optimisasi terarah di berbagai lapisan proses impor massal data.

PolarDB for PostgreSQL menyediakan infrastruktur impor massal tujuan umum untuk objek yang hanya terlihat dalam proses saat ini. Infrastruktur ini secara signifikan meningkatkan performa impor massal dengan melewati manajemen buffer, mengonstruksi halaman secara massal, memperluas halaman penyimpanan secara massal, mencatat catatan Write-Ahead Logging (WAL) secara massal, serta mengubah jalur sinkron menjadi operasi asinkron.

Catatan penggunaan

Sintaks berikut menggunakan infrastruktur ini:

  • CREATE INDEX

  • REINDEX

  • VACUUM FULL

  • ALTER TABLE SET TABLESPACE

  • CREATE MATERIALIZED VIEW

  • REFRESH MATERIALIZED VIEW

  • CREATE TABLE AS/SELECT INTO

    Catatan

    Penggunaan infrastruktur impor massal oleh pernyataan CREATE TABLE AS atau SELECT INTO bergantung pada nilai parameter wal_level. Jika parameter ini diatur ke nilai yang lebih rendah dari logical, pernyataan tersebut menggunakan impor massal secara default. Jika parameter ini diatur ke logical, pernyataan tersebut menggunakan antarmuka bulk insert dari infrastruktur Multi-Insert Table AM secara default.

Cara kerjanya

Melewati manajemen buffer

Karena data yang diimpor tidak perlu terlihat oleh proses lain sebelum transaksi dikomit, data tersebut dapat diproses langsung di memori privat proses selama konstruksi halaman. Hal ini menghindari alokasi halaman dari Buffer Pool memori bersama. Dengan melewati manajemen buffer, persaingan resource lock dapat dihindari dan efisiensi konstruksi halaman meningkat secara signifikan.

Perluasan halaman secara massal

Mekanisme impor massal tradisional biasanya menulis data halaman demi halaman. Setiap kali sebuah halaman penuh, ekstensi satu halaman diminta melalui lapisan manajemen penyimpanan. Karena latensi tinggi pada penyimpanan cloud, operasi ekstensi halaman demi halaman ini menyebabkan overhead I/O wait yang signifikan pada jalur utama. PolarDB for PostgreSQL melakukan pra-agregasi beberapa halaman data di memori privat proses. Ketika data yang terakumulasi mencapai ambang batas, sistem melakukan ekstensi halaman massal melalui lapisan manajemen penyimpanan. Pendekatan ini secara efektif mendistribusikan latensi ekstensi halaman tunggal.

Pencatatan log WAL secara massal

Pada mekanisme impor massal tradisional, operasi impor tabel heap maupun indeks biasanya mencatat data baris demi baris. Artinya, catatan WAL terpisah dihasilkan untuk setiap baris. Selama konstruksi halaman di memori privat, suatu proses menggabungkan beberapa baris menjadi satu halaman dan melakukan pra-agregasi beberapa halaman untuk persistensi. Oleh karena itu, PolarDB for PostgreSQL menggunakan catatan WAL bertipe XLOG_FPI untuk mencatat halaman-halaman tersebut secara massal setelah dikonstruksi. Jenis catatan WAL ini berisi seluruh data halaman, bukan perubahan inkremental pada halaman tersebut. Dibandingkan metode pencatatan baris demi baris tradisional, pendekatan ini lebih ringkas dan secara efektif mengurangi overhead metadata WAL.

Mengubah jalur utama menjadi asinkron

Ketika suatu transaksi dikomit, halaman yang dikonstruksi di memori privat harus menjadi terlihat oleh proses lain. Secara teori, hal ini memerlukan jaminan bahwa semua halaman yang dikonstruksi telah dipersistensikan sebelum transaksi dikomit, tetapi hal ini akan secara signifikan meningkatkan latensi jalur utama. Untuk mengatasi hal ini, PolarDB for PostgreSQL segera menyalin halaman ke Buffer Pool dan menandainya sebagai halaman kotor setelah konstruksi halaman massal selesai. Hal ini memungkinkan komit untuk segera mengembalikan respons. Proses pembersihan halaman kotor paralel di latar belakang kemudian menulis halaman tersebut ke penyimpanan secara asinkron. Mekanisme ini memanfaatkan kemampuan pembersihan halaman kotor ber-throughput tinggi dari PolarDB dan memungkinkan pemrosesan paralel antara konstruksi halaman dan pembersihan latar belakang.

Mekanisme ini juga menjamin konsistensi data jika terjadi crash sistem. Karena catatan WAL tipe FPI telah dicatat, pemulihan data yang telah dikomit tetap terjamin.

Penggunaan

Parameter polar_bulk_write_maxpages mengontrol jumlah maksimum halaman yang akan diagregasi di memori privat proses. Ketika jumlah halaman yang telah diagregasi mencapai nilai ini, sistem akan memicu ekstensi halaman massal, pencatatan WAL massal, serta penyalinan halaman ke Buffer Pool untuk pembersihan. Nilai default telah dioptimalkan dan biasanya tidak perlu diubah.

SHOW polar_bulk_write_maxpages;
 polar_bulk_write_maxpages
---------------------------
 1MB
(1 row)