All Products
Search
Document Center

AnalyticDB:Penyetelan parameter performa

Last Updated:Mar 29, 2026

AnalyticDB for PostgreSQL berfungsi langsung tanpa konfigurasi tambahan untuk sebagian besar kasus penggunaan. Namun, pada skenario dengan kebutuhan performa spesifik—seperti konkurensi koneksi tinggi, kueri yang intensif memori, atau workload campuran dengan prioritas berbeda—penyetelan parameter database dapat meningkatkan throughput dan pemanfaatan resource secara signifikan.

Tingkat parameter

Parameter diterapkan pada empat tingkat. Parameter yang diatur pada tingkat lebih rendah akan menggantikan parameter yang sama pada tingkat lebih tinggi dalam cakupannya.

TingkatCakupanCara mengatur
SystemSemua pengguna di seluruh database dalam satu instansAjukan tiket kepada personel operasi dan maintenance (O&M)
DatabaseSemua session dalam database tertentuALTER DATABASE name SET parameter { TO | = } { value | DEFAULT };
RoleSemua session untuk pengguna tertentuALTER ROLE name SET parameter { TO | = } { value | DEFAULT };
SessionHanya session saat iniSET parameter { TO | = } { value | DEFAULT };
Mulailah dengan penyetelan tingkat session. Ubah parameter pada tingkat yang lebih tinggi hanya setelah memastikan perubahan tersebut tidak memengaruhi pengguna atau workload lain.

Periksa nilai saat ini dari suatu parameter

Sebelum mengubah parameter, periksa nilai saat ini:

-- Periksa parameter tertentu dalam session saat ini
SHOW statement_mem;

-- Periksa semua parameter untuk database saat ini
SELECT name, setting, unit, context FROM pg_settings WHERE name = 'statement_mem';

Parameter tingkat sistem

Parameter berikut memerlukan tiket untuk dimodifikasi. Untuk deskripsi lengkapnya, lihat Referensi parameter konfigurasi Greenplum.

ParameterBawaanTipe/UnitNilai valid
gp_autostats_modeON_NO_STATSSTRINGNONE, ON_CHANGE, ON_NO_STATS
gp_autostats_mode_in_functionsNONESTRINGNONE, ON_CHANGE, ON_NO_STATS
gp_max_slices50INT0–1000
log_rotation_size102400KB0–4194304
master.rds_enable_vmem_protectonSTRINGon, off
master.rds_max_non_super_conns500INT10–1000
max_stack_depth2048KB100–2048000
max_statement_mem2048000KB32768–2147483647
optimizeronSTRINGon, off
random_page_cost4DOUBLE0–1000
rds.rds_enable_aliyun_oss_endpointonSTRINGon, off
rds.rds_enable_oss_endpoint_whitelist_checkonSTRINGon, off
rds_max_super_conns50INT10–100
segment.rds_enable_vmem_proctectoffSTRINGon, off
segment.rds_max_non_super_conns1000INT10–3000
statement_mem2047000KB50–2147483647
statement_timeout10800000INT0–2147483647

Parameter koneksi

Parameter ini mengontrol jumlah koneksi bersamaan yang dapat diterima oleh instans. Konfigurasi yang tidak tepat dapat menyebabkan error koneksi pada skenario konkurensi tinggi.

ParameterBerlakuKetergantunganDeskripsi
max_connectionsRestart instansNilai node komputasi harus 3–5 kali nilai node koordinatorJumlah maksimum koneksi bersamaan per node. Alih-alih menaikkan max_connections secara langsung, sesuaikan rds_max_non_super_conns sebagai gantinya—parameter ini berlaku tanpa perlu restart. Untuk koneksi singkat dengan konkurensi tinggi, atur rds_max_non_super_conns ke nilai antara 500 dan nilai max_connections.
max_prepared_transactionsRestart instansAtur ke nilai yang sama dengan max_connections. 2 × max_prepared_transactions harus melebihi rds_max_non_super_conns + rds_max_super_conns.Jumlah maksimum transaksi dalam status two-phase commit (2PC). Jika terjadi error pada kondisi konkurensi tinggi, naikkan nilai ini.
rds_max_non_super_connsReload konfigurasiHarus lebih kecil dari max_connections. rds_max_non_super_conns + rds_max_super_conns tidak boleh melebihi max_connections. Nilai node komputasi harus 3–5 kali nilai node koordinator.Jumlah maksimum koneksi untuk non-superuser. Menyesuaikan parameter ini merupakan cara utama untuk mengelola batas koneksi.
rds_max_super_connsReload konfigurasiBatasan yang sama seperti rds_max_non_super_conns.Jumlah maksimum koneksi untuk superuser. Biasanya tidak perlu disesuaikan.

Jika Anda mencapai batas koneksi: Tingkatkan rds_max_non_super_conns (berlaku segera melalui reload). Jika batas tersebut sudah mencapai nilai max_connections, naikkan terlebih dahulu max_connections (memerlukan restart), lalu tingkatkan rds_max_non_super_conns.

Parameter memori

Parameter ini mengontrol alokasi memori untuk kueri dan penggunaan bersama di antara session. Lakukan penyetelan ketika kueri gagal karena error kehabisan memori (OOM) atau ketika memori kurang dimanfaatkan.

ParameterUnitBerlakuKetergantunganDeskripsi
shared_buffersKBRestart instansUntuk workload tabel berorientasi baris, atur ke 25% dari memori instans atau lebih tinggi pada node komputasi.Ukuran pool buffer bersama. Atur secara terpisah untuk node koordinator dan node komputasi. Cache pada node koordinator menyimpan tabel kamus data; node komputasi menyimpan cache tabel berorientasi baris. Tabel Append-optimized column-oriented (AOCO) tidak dipengaruhi oleh pengaturan ini. Jika instans memiliki lebih dari 100.000 tabel, tingkatkan nilai ini pada kedua jenis node.
temp_buffersKBReload konfigurasiUkuran buffer sementara yang digunakan untuk akses session-level ke tabel temporary. Bawaan: 8 MB. Tingkatkan nilai ini pada tingkat session untuk meningkatkan performa pada tabel temporary berukuran besar.
gp_vmem_protect_limitMBRestart instansgp_vmem_protect_limit = gp_vmem / acting_primary_segmentsMemori maksimum yang dapat digunakan oleh semua proses postgres pada satu node komputasi. Kueri akan gagal jika memerlukan memori melebihi batas ini. Atur secara terpisah untuk node komputasi primary dan secondary. Hitung nilai yang sesuai: gp_vmem = ((SWAP + RAM) - (7,5 GB + 0,05 × RAM)) / 1,7 lalu gp_vmem_protect_limit = gp_vmem / acting_primary_segments. Jika kueri gagal karena error memori, tingkatkan nilai ini. Untuk mengatur batas memori per kueri, gunakan parameter antrian sumber daya—lihat Gunakan resource queues untuk manajemen workload.
gp_vmem_protect_segworker_cache_limitKBRestart instansMemori maksimum yang di-cache per proses pelaksana kueri pada node komputasi. Jika instans memiliki banyak koneksi atau proses idle, turunkan nilai ini untuk membebaskan memori bagi kueri aktif. Atur secara terpisah untuk setiap node komputasi.
gp_resqueue_memory_policyReload konfigurasiKebijakan manajemen memori. eager_free melepaskan memori di akhir setiap tahap rencana kueri, sehingga tersedia untuk tahap berikutnya—mengurangi risiko OOM tetapi menambah overhead. auto mendistribusikan memori berdasarkan statement_mem dan batas memori antrian sumber daya.
statement_memKBReload konfigurasiAktif ketika gp_resqueue_memory_policy diatur ke auto. Tidak boleh melebihi max_statement_mem.Memori yang dialokasikan per kueri pada host. Jika kueri memerlukan memori melebihi batas ini, data akan ditulis ke file disk sementara. Hitung nilai yang sesuai: statement_mem = (gp_vmem_protect_limit GB × 0,9) / max_expected_concurrent_queries. Contohnya, dengan gp_vmem_protect_limit = 8 GB dan 40 kueri bersamaan yang diharapkan: (8 GB × 0,9) / 40 = 184 MB.
max_statement_memKBReload konfigurasi(seghost_physical_memory) / (average_number_concurrent_queries)Batas atas alokasi memori per kueri. Mencegah error OOM pada node komputasi ketika statement_mem diatur terlalu tinggi. Hitung nilai yang sesuai: max_statement_mem = seghost_physical_memory / average_number_concurrent_queries.

Parameter workload

Parameter ini mengontrol alokasi CPU dan prioritas kueri di antara workload bersamaan.

ParameterNilai validBerlakuKetergantunganDeskripsi
gp_resqueue_priorityBOOLEANRestart instansMengaktifkan atau menonaktifkan prioritisasi kueri. Saat dinonaktifkan, pengaturan prioritas pada resource queue tidak berpengaruh selama waktu proses. Nonaktifkan prioritisasi pada skenario sensitif latensi di mana semua kueri harus bersaing secara setara untuk CPU.
gp_resqueue_priority_cpucores_per_segment0,1–512,0Restart instansJumlah core CPU yang dialokasikan untuk setiap node komputasi. Atur nilai ini agar sesuai dengan jumlah CPU aktual instans saat dibuat. Nilai yang salah menyebabkan pemanfaatan CPU tidak optimal dan membuat prioritisasi kueri tidak andal.
gp_resqueue_priority_sweeper_interval500–15000 msRestart instansgp_resqueue_priority harus diaktifkanInterval pembaruan perhitungan pemanfaatan CPU untuk kueri aktif. Interval yang lebih pendek meningkatkan akurasi penegakan prioritas tetapi menambah overhead CPU.

Pertimbangan untuk gp_resqueue_priority: Menonaktifkan prioritisasi kueri menghilangkan overhead penjadwalan dan dapat meningkatkan throughput untuk workload seragam. Jika workload Anda mencampur kueri sensitif latensi dan kueri batch, pertahankan prioritisasi aktif dan tetapkan prioritas melalui resource queue. Untuk informasi lebih lanjut, lihat Gunakan resource queues untuk manajemen workload.

Langkah selanjutnya