All Products
Search
Document Center

PolarDB:Konsistensi Global

Last Updated:Jul 15, 2026

Topik ini menjelaskan prasyarat, latar belakang, mekanisme, prosedur, serta pertanyaan umum (FAQ) terkait fitur konsistensi global.

Ikhtisar

PolarDB for PostgreSQL dan menyediakan fitur konsistensi global pada tingkat kernel database yang memastikan permintaan baca yang dikirim ke node mana pun dalam kluster mengembalikan hasil yang konsisten secara kuat.

Penerapan

Fitur ini didukung pada versi berikut dari PolarDB for PostgreSQL:

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

Catatan

Anda dapat melihat versi mesin minor di Konsol atau dengan menjalankan pernyataan SHOW polardb_version;. Jika versi mesin minor kluster Anda tidak memenuhi persyaratan, upgrade versi mesin minor.

Latar Belakang

Pada arsitektur asli PolarDB satu writer-multi reader, node read-only secara default menyediakan konsistensi sesi. Meskipun replikasi fisik dan penyimpanan bersama dapat secara efektif mengurangi lag replikasi pada node read-only, keduanya tidak dapat menjamin bahwa permintaan baca akan mengambil data terbaru yang ditulis ke node read-write. Di industri yang sensitif terhadap latensi seperti keuangan dan gaming, lag baca ini dapat menyebabkan inkonsistensi logika bisnis.

Seperti yang ditunjukkan pada gambar, aplikasi bisnis sering kali didekopel menggunakan framework layanan mikro. Setelah Layanan A menulis data, ia mengirim pesan sukses tulis ke Layanan B melalui antrian pesan. Dalam skenario konsistensi sesi, jika Layanan A segera membaca data tersebut dalam sesi yang sama setelah memperbarui col menjadi 20, ia menerima hasil terbaru yaitu 20, bahkan jika permintaan diarahkan ke node read-only. Namun, setelah menerima notifikasi pembaruan, jika Layanan B membaca langsung dari node read-only, ia mungkin masih mengambil nilai lama yaitu 10. Skenario ini dapat menyebabkan masalah konsistensi data bagi aplikasi. Untuk memastikan konsistensi baca-setelah-tulis, aplikasi harus mengarahkan permintaan baca ke node read-write, sehingga sumber daya node read-only menjadi menganggur.

Cara Kerja

PolarDB for PostgreSQL dan menyediakan kemampuan baca konsistensi kuat untuk node read-only pada tingkat kernel database, yang memastikan node read-only selalu melihat data terbaru yang ditulis ke node read-write. Kemampuan ini memberikan konsistensi kuat di seluruh kluster untuk operasi baca. Saat konsistensi global diaktifkan, setiap transaksi read-write yang dikomit pada node read-write diberi nomor urutan komitmen (CSN). CSN merepresentasikan urutan komitmen transaksi dan digunakan untuk membangun snapshot transaksi yang lebih efisien, menggantikan daftar transaksi aktif PostgreSQL asli. Node read-write mencatat CSN dalam write-ahead log (WAL), dan node read-only memutar ulang WAL untuk membangun status transaksi lengkap.

Langkah-langkah berikut menjelaskan proses eksekusi SQL untuk baca konsistensi kuat pada node RO:

  1. Klien mengirim permintaan kueri ke node read-only.

  2. Node read-only mengambil CSN terbaru dari node read-write melalui jaringan.

  3. Node read-only menggunakan CSN terbaru dari node read-write untuk membangun tampilan baca konsistensi kuat dan menunggu status transaksinya diputar ulang hingga titik tersebut.

  4. Node read-only menentukan visibilitas data berdasarkan tampilan ini dan mengembalikan hasilnya ke klien.

Prosedur

  1. Masuk ke PolarDB console. Di panel navigasi kiri, klik Clusters. Pilih region tempat kluster Anda berada, lalu klik ID kluster tersebut.

  2. Di panel navigasi kiri, pilih Settings and Management > Parameters. Atur parameter polar_csn_enable dan polar_global_csn_enable menjadi on untuk mengaktifkan fitur CSN transaksi.

    Catatan

    Modifikasi parameter ini memerlukan restart kluster agar berlaku. Rencanakan sesuai kebutuhan. Untuk informasi lebih lanjut tentang cara mengatur parameter kluster di Konsol, lihat Set cluster parameters.

  3. Di halaman Basic Information, pada bagian Database Connections, klik Configure di samping Cluster Endpoint (Recommended), atau klik Modify pada kotak dialog yang muncul.

  4. Di halaman Edit Endpoint, atur tingkat konsistensi menjadi Global Consistency (Strong) dan konfigurasikan dua parameter terkait berikut:

    Parameter

    Description

    Global Consistency Timeout

    Waktu maksimum, dalam milidetik, yang ditunggu oleh node read-only untuk menyinkronkan dengan node primary. Nilai valid: 1 hingga 1.000.000. Default: 100.

    Global Consistency Timeout Policy

    Aksi yang diambil saat node read-only mengalami timeout. Nilai valid:

    • Send Requests to Primary Node (Default)

    • Return Error Messages Due to Timeout

    • Automatic Downgrade to Inconsistent Read Due to Timeout

FAQ

Menonaktifkan untuk sesi tertentu

Setelah konsistensi global diaktifkan pada node read-only, fitur ini berlaku untuk semua koneksi baru secara default. Jika kueri tertentu tidak memerlukan fitur ini, jalankan perintah berikut untuk menonaktifkan konsistensi global pada sesi saat ini:

SET polar_scc_enable = off;

Timeout baca

Masuk ke PolarDB console. Klik Configure di samping cluster endpoint atau Modify pada kotak dialog yang terbuka. Lalu, ubah Global Consistency Timeout. Jika terjadi timeout, klien menerima pesan error berikut:

SCC timeout waiting for WAL replay
Catatan

Untuk kluster dengan beban tulis yang tinggi atau tidak stabil, pertimbangkan untuk mengatur nilai yang lebih besar pada parameter Global Consistency Timeout.

Kebijakan downgrade saat timeout

Masuk ke PolarDB console. Klik Configure di samping cluster endpoint atau Modify pada kotak dialog yang muncul. Atur Global Consistency Timeout Policy menjadi Automatic Downgrade to Inconsistent Read Due to Timeout. Saat operasi baca konsistensi global mengalami timeout, kueri tersebut secara otomatis diturunkan ke baca tidak konsisten, dan klien tidak menerima pesan error. Untuk nilai valid dan detail lebih lanjut tentang parameter ini, lihat deskripsi parameter Global Consistency Timeout Policy.

Menghindari latensi baca

Masuk ke PolarDB console dan atur parameter synchronous_commit menjadi on untuk menghindari latensi baca dalam skenario beban tulis rendah. Untuk informasi lebih lanjut tentang cara mengubah parameter di Konsol, lihat Set cluster parameters.