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.
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:
Klien mengirimkan permintaan kueri ke node baca-saja.
Node baca-saja mendapatkan CSN terbesar saat ini dari node utama melalui jaringan.
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.
Node baca-saja menentukan visibilitas data yang relevan dengan kueri berdasarkan tampilan baca konsisten dan mengembalikan hasil kueri ke klien.
Prosedur
Masuk ke Konsol PolarDB.
Di panel navigasi sisi kiri, klik Cluster.
Di pojok kiri atas, pilih wilayah tempat cluster ditempatkan.
Temukan cluster dan klik ID-nya.
Di panel navigasi sisi kiri, pilih . Atur parameter
polar_csn_enabledanpolar_global_csn_enablekeONuntuk mengaktifkan fitur CSN untuk transaksi.CatatanAnda 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.
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.

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