全部产品
Search
文档中心

PolarDB:Konsistensi global

更新时间:Jul 02, 2025

Topik ini menjelaskan fitur konsistensi global.

Ikhtisar

PolarDB for PostgreSQL (Kompatibel dengan Oracle) menyediakan fitur konsistensi global pada tingkat kernel database. Fitur ini memastikan hasil yang konsisten kuat untuk permintaan baca yang dikirim ke node baca-saja di kluster Anda.

Prasyarat

Kluster PolarDB for PostgreSQL (Kompatibel dengan Oracle) Anda harus menjalankan versi mesin database berikut:

PolarDB for PostgreSQL (Kompatibel dengan Oracle) 2.0 dengan versi revisi 2.0.14.22.0 atau lebih baru.

Catatan

Anda dapat mengeksekusi pernyataan berikut untuk melihat versi revisi mesin database dari kluster PolarDB for PostgreSQL (Kompatibel dengan Oracle):

SHOW polar_version;

Untuk informasi tentang cara memperbarui versi revisi mesin database kluster Anda, lihat untuk PostgreSQL atau Perbarui versi untuk Oracle.

Informasi latar belakang

Dalam arsitektur satu-penulis, multi-pembaca asli dari PolarDB, node baca-saja menyediakan konsistensi sesi. Meskipun teknologi replikasi fisik dan penyimpanan bersama secara efektif mengurangi penundaan replikasi node baca-saja, mereka tidak dapat memastikan bahwa permintaan yang dikirim ke node baca-saja selalu membaca data terbaru yang ditulis ke node utama. Penundaan ini dapat menyebabkan ketidaksesuaian logika bisnis di industri yang sensitif terhadap latensi seperti keuangan dan game.

Dalam sebagian besar kasus, aplikasi bisnis dipecah menjadi layanan yang lebih kecil dan independen menggunakan kerangka layanan mikro, seperti yang ditunjukkan pada gambar sebelumnya. Setelah Layanan A menulis data, ia menghasilkan pesan keberhasilan penulisan dan mengirim pesan tersebut ke Layanan B menggunakan antrian pesan. Setelah Layanan A memperbarui nilai kolom col menjadi 20, konsistensi sesi memastikan bahwa Layanan A dapat segera membaca nilai yang diperbarui menggunakan sesi yang sama bahkan jika permintaan baca dialihkan ke node baca-saja. Namun, ketika Layanan B menerima pesan pembaruan dari Layanan A dan membaca nilai kolom col dari node baca-saja, Layanan B mungkin masih mengambil nilai sebelumnya, yaitu 10. Ketidaksesuaian ini dapat menyebabkan masalah konsistensi data untuk layanan hulu. Untuk memastikan konsistensi baca-setelah-tulis, permintaan baca dari layanan hanya dapat dialihkan ke node utama. Akibatnya, node baca-saja kurang dimanfaatkan.

Solusi teknis

PolarDB for PostgreSQL (Kompatibel dengan Oracle) menyediakan kemampuan membaca konsistensi kuat pada tingkat kernel database untuk node baca-saja. Ini memastikan bahwa semua permintaan baca ke node baca-saja selalu membaca data terbaru yang ditulis ke node utama, sehingga memastikan konsistensi kuat cluster-wide untuk operasi baca. Setelah Anda mengaktifkan fitur konsistensi global, setiap transaksi baca-tulis yang dilakukan di node utama diberi nomor urutan komitmen (CSN). CSN menunjukkan urutan komitmen transaksi dan menggantikan daftar transaksi aktif di PostgreSQL asli. Node utama mencatat CSN ke Write Ahead Log (WAL), memungkinkan node baca-saja membangun tampilan lengkap status transaksi dengan memainkan ulang catatan WAL.

Berikut ini adalah proses eksekusi SQL yang memastikan kemampuan membaca konsistensi kuat untuk node baca-saja:

  1. Klien mengirimkan permintaan kueri ke node baca-saja.

  2. Node baca-saja mendapatkan CSN terbesar saat ini dari node utama melalui jaringan.

  3. Node baca-saja membangun tampilan baca konsisten menggunakan CSN terbesar yang diperoleh dari node utama dan menunggu hingga status transaksinya disinkronkan hingga titik yang sesuai dengan CSN maksimum.

  4. Node baca-saja menentukan visibilitas data yang relevan dengan kueri berdasarkan tampilan baca konsisten dan mengembalikan hasil kueri ke klien.

Prosedur

  1. Masuk ke Konsol PolarDB.

  2. Di panel navigasi sisi kiri, klik Cluster.

  3. Di pojok kiri atas, pilih wilayah tempat cluster ditempatkan.

  4. Temukan cluster dan klik ID-nya.

  5. Di panel navigasi sisi kiri, pilih Settings and Management > Parameters. Atur parameter polar_csn_enable dan polar_global_csn_enable ke ON untuk mengaktifkan fitur CSN untuk transaksi.

    Catatan

    Anda harus me-restart cluster agar pengaturan parameter yang dimodifikasi dapat berlaku. Sebelum Anda memodifikasi parameter, buat pengaturan bisnis dan lanjutkan dengan hati-hati. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter cluster di Konsol PolarDB, lihat Konfigurasikan Parameter Cluster.

  6. Di bagian Koneksi Database halaman Informasi Dasar cluster, klik Configure di sebelah Titik Akhir Cluster. Anda juga dapat mengarahkan pointer ke kartu Titik Akhir Cluster dan klik Modify di pesan yang muncul.

    image

  7. Di kotak dialog Pengaturan Modifikasi Titik Akhir, atur parameter Tingkat Konsistensi ke Global Consistency (Strong) dan konfigurasikan parameter. Tabel berikut menjelaskan parameter.

    Parameter

    Deskripsi

    Global Consistency Timeout

    Jumlah waktu maksimum sistem menunggu node baca-saja untuk menyinkronkan dengan data terbaru dari node utama. Rentang nilai: 1 hingga 1000000. Unit: milidetik. Nilai default: 100.

    Global Consistency Timeout Policy

    Kebijakan yang akan diterapkan ketika node baca-saja gagal menyinkronkan dengan data terbaru dari node utama dalam periode timeout yang ditentukan. Nilai valid:

    • Send Requests to Primary Node (Default)

    • Return Error Messages Due to Timeout

    • Automatic Downgrade to Inconsistent Read Due to Timeout

FAQ

Apa yang harus saya lakukan jika saya tidak ingin menerapkan konsistensi global untuk kueri tertentu setelah mengaktifkan fitur konsistensi global?

Secara default, setelah Anda mengaktifkan fitur konsistensi global untuk node baca-saja, fitur tersebut berlaku untuk semua kueri baru. Jika Anda tidak ingin menerapkan konsistensi global untuk kueri tertentu, Anda dapat mengeksekusi pernyataan berikut untuk menonaktifkan fitur untuk sesi:

SET polar_scc_enable = off;

Bagaimana cara mengonfigurasi parameter Timeout Konsistensi Global?

Masuk ke Konsol PolarDB dan buka halaman Informasi Dasar cluster Anda. Temukan titik akhir cluster dan klik Configure. Anda juga dapat mengarahkan pointer ke kartu Titik Akhir Cluster dan klik Modify di pesan yang muncul. Kemudian, ubah nilai parameter Global Consistency Timeout. Jika timeout konsistensi global terjadi, klien menerima pesan kesalahan berikut:

SCC timeout waiting for WAL replay
Catatan

Jika cluster Anda menangani beban tulis yang berat atau tidak dapat diprediksi, Anda dapat mengatur parameter Global Consistency Timeout ke nilai yang lebih besar.

Bagaimana cara menurunkan tingkat konsistensi global setelah timeout terjadi?

Masuk ke Konsol PolarDB dan buka halaman Informasi Dasar cluster Anda. Temukan titik akhir cluster dan klik Configure. Anda juga dapat mengarahkan pointer ke kartu Titik Akhir Cluster dan klik Modify di pesan yang muncul. Kemudian, atur nilai parameter Global Consistency Timeout Policy ke Automatic Downgrade to Inconsistent Read Due to Timeout. Dengan cara ini, ketika kueri baca konsistensi global timeout, sistem secara otomatis menurunkan tingkat konsistensi kueri ke baca tidak konsisten. Tidak ada pesan kesalahan yang dikembalikan ke klien. Untuk informasi tentang nilai valid parameter Kebijakan Timeout Konsistensi Global, lihat tabel yang menjelaskan parameter Kebijakan Timeout Konsistensi Global.

Bagaimana cara mencegah latensi baca dalam skenario beban tulis rendah?

Masuk ke Konsol PolarDB dan atur parameter synchronous_commit ke ON untuk mencegah latensi baca dalam skenario beban tulis rendah. Untuk informasi tentang cara mengonfigurasi parameter cluster di Konsol PolarDB, lihat Konfigurasikan Parameter Cluster.