All Products
Search
Document Center

PolarDB:Konsistensi global

Last Updated:Mar 29, 2026

PolarDB for PostgreSQL menerapkan konsistensi kuat di tingkat kernel, memastikan bahwa permintaan baca yang dikirim ke node mana pun dalam kluster selalu mengembalikan data terbaru yang telah dikomit.

Cakupan

Konsistensi global didukung pada versi berikut dari PolarDB for PostgreSQL:

  • PostgreSQL 16 (versi mesin minor 2.0.16.9.9.0 atau lebih baru)

  • PostgreSQL 14 (versi mesin minor 2.0.14.11.22.0 atau lebih baru)

Untuk memeriksa versi mesin minor, masuk ke Konsol atau jalankan SHOW polardb_version;. Jika versinya tidak memenuhi persyaratan, upgrade versi mesin minor. Untuk petunjuknya, lihat Lihat versi mesin minor.

Latar Belakang

Secara default, node read-only di PolarDB menyediakan session consistency: klien yang menulis data dan segera membacanya kembali dalam sesi yang sama akan melihat nilai terbaru, bahkan ketika permintaan tersebut diarahkan ke node read-only. Namun, pembacaan dari sesi atau layanan yang berbeda tidak dijamin mencerminkan tulisan terbaru.

Kesenjangan ini menimbulkan masalah nyata dalam arsitektur layanan mikro. Setelah Layanan A menulis suatu nilai dan menerbitkan event melalui antrian pesan, Layanan B mungkin membaca dari node read-only dan masih melihat data lama. Tanpa konsistensi global, satu-satunya opsi aman adalah mengarahkan semua permintaan baca ke node RW—sehingga kapasitas node read-only tidak termanfaatkan dan aplikasi harus mempertahankan dua set koneksi database terpisah.

Konsistensi global menghilangkan batasan ini dengan menjamin bahwa setiap node read-only selalu mengembalikan data terbaru yang telah dikomit, terlepas dari sesi atau layanan mana yang mengeluarkan permintaan tersebut.

Cara Kerja

Setiap transaksi baca-tulis yang dikomit pada node RW diberi Commit Sequence Number (CSN). CSN menentukan urutan komit transaksi secara global dan menggantikan daftar transaksi aktif yang digunakan di PostgreSQL asli, sehingga memungkinkan mekanisme snapshot yang lebih efisien. Node RW mencatat setiap CSN dalam Write-Ahead Log (WAL), dan node read-only memutar ulang WAL untuk merekonstruksi status transaksi secara lengkap.

Saat klien melakukan kueri ke node read-only dalam mode konsistensi global:

  1. Node read-only mengambil CSN terbaru dari node RW melalui jaringan.

  2. Node tersebut membangun tampilan baca konsistensi kuat berdasarkan CSN tersebut dan menunggu pemutaran ulang WAL mencapai offset yang sesuai.

  3. Node tersebut mengevaluasi visibilitas data menggunakan tampilan baca konsistensi kuat dan mengembalikan hasilnya ke klien.

imageimage

Aktifkan konsistensi global

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Kluster PolarDB for PostgreSQL yang berjalan pada versi yang didukung (lihat Cakupan)

  • Akses ke Konsol PolarDB

Aktifkan fitur CSN

  1. Masuk ke Konsol PolarDB.

  2. Di panel navigasi kiri, klik Clusters.

  3. Di pojok kiri atas, pilih wilayah tempat kluster dideploy.

  4. Klik ID kluster target.

  5. Di panel navigasi kiri, pilih Settings and Management > Parameters.

  6. Atur kedua parameter polar_csn_enable dan polar_global_csn_enable menjadi on.

    Penting

    Setelah disimpan, restart kluster agar perubahan diterapkan. Jadwalkan jendela restart terlebih dahulu. Untuk petunjuk konfigurasi parameter, lihat .

Atur tingkat konsistensi

  1. Pada halaman Basic Information kluster, buka bagian Database Connections dan klik Configure di samping Cluster Endpoint (atau klik Settings di kotak dialog).

    Database Connections section showing the Configure button next to Cluster Endpoint

  2. Pada halaman konfigurasi titik akhir, atur Consistency Level menjadi Global Consistency (Strong).

  3. Konfigurasikan dua parameter terkait berikut:

    ParameterDescriptionDefault
    Global Consistency TimeoutDurasi waktu maksimum node read-only menunggu pemutaran ulang WAL sebelum menerapkan kebijakan timeout. Nilai valid: 1–1.000.000. Satuan: ms.100
    Global Consistency Timeout PolicyTindakan yang diambil saat node read-only mengalami timeout. Lihat tabel di bawah.0

    Global Consistency Timeout Policy values:

    ValueBehavior
    00, Kirim Permintaan ke Primary Node (Default)
    11, Kembalikan Pesan Error Akibat Timeout
    22, Penurunan Otomatis ke Pembacaan Tidak Konsisten Akibat Timeout

FAQ

Bagaimana cara menonaktifkan konsistensi global untuk sesi tertentu?

Setelah konsistensi global diaktifkan pada Cluster Endpoint, pengaturan tersebut berlaku untuk semua koneksi baru. Untuk menonaktifkannya pada satu sesi tertentu, jalankan:

SET polar_scc_enable = off;

Bagaimana cara menyesuaikan timeout konsistensi global?

Di Konsol PolarDB, klik Configure di samping Cluster Endpoint target (atau Settings di kotak dialog) dan perbarui nilai Global Consistency Timeout.

Saat terjadi timeout, klien menerima:

SCC timeout waiting for WAL replay
Untuk kluster dengan beban kerja tulis yang berat atau tidak stabil, tingkatkan nilai Global Consistency Timeout untuk mengurangi frekuensi timeout.

Bagaimana cara menghindari latensi baca dalam skenario beban tulis rendah?

Dalam skenario beban tulis rendah, node read-only mungkin menunggu pemutaran ulang WAL meskipun tidak ada data baru. Untuk mengurangi latensi ini, atur parameter synchronous_commit menjadi on di Konsol PolarDB. Untuk petunjuknya, lihat Setel parameter kluster.

Bagaimana cara menurunkan tingkat konsistensi secara otomatis setelah terjadi timeout?

Di Konsol PolarDB, klik Configure di samping Cluster Endpoint target (atau Settings di kotak dialog), lalu atur Global Consistency Timeout Policy menjadi 2, Automatic Downgrade to Inconsistent Read Due to Timeout. Saat terjadi timeout, kueri akan dilanjutkan dengan pembacaan tidak konsisten dan tidak ada error yang dikembalikan ke klien.